forked from TDTP/admin_transporte_backend
lee los trayecto de redis
parent
c80988d3ee
commit
cdc917678b
|
@ -6,8 +6,12 @@ from django_filters.rest_framework import DjangoFilterBackend
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
from .. import models, serializers
|
from .. import models, serializers
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
|
from os import getenv
|
||||||
|
import redis
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
class LineaViewSet(viewsets.ModelViewSet):
|
class LineaViewSet(viewsets.ModelViewSet):
|
||||||
queryset = models.Linea.objects.all()
|
queryset = models.Linea.objects.all()
|
||||||
serializer_class = serializers.LineaSerializer
|
serializer_class = serializers.LineaSerializer
|
||||||
|
@ -34,8 +38,6 @@ class LineaViewSet(viewsets.ModelViewSet):
|
||||||
def paraderos(self, request, pk=None):
|
def paraderos(self, request, pk=None):
|
||||||
pk = request.GET['id_linea']
|
pk = request.GET['id_linea']
|
||||||
|
|
||||||
logging.error(request.GET)
|
|
||||||
|
|
||||||
paraderos = models.Paradero.objects \
|
paraderos = models.Paradero.objects \
|
||||||
.filter(vigente=True, lineaparadero__id_linea=pk) \
|
.filter(vigente=True, lineaparadero__id_linea=pk) \
|
||||||
.values('id_paradero','stop_lat','stop_lon','stop_name') \
|
.values('id_paradero','stop_lat','stop_lon','stop_name') \
|
||||||
|
@ -47,33 +49,39 @@ class LineaViewSet(viewsets.ModelViewSet):
|
||||||
def buses(self, request, pk=None):
|
def buses(self, request, pk=None):
|
||||||
pk = request.GET['id_linea']
|
pk = request.GET['id_linea']
|
||||||
|
|
||||||
query = "SELECT distinct \
|
db_host = getenv('DB_REDIS_HOST')
|
||||||
l.route_color, \
|
db_port = getenv('DB_REDIS_PORT')
|
||||||
l.route_text_color, \
|
r = redis.Redis(host=db_host, port=db_port, decode_responses=True)
|
||||||
gp.vehicle_license_plate as Patente_vehiculo, \
|
|
||||||
speed::numeric(5,2) as speed, \
|
paraderos = models.Paradero.objects \
|
||||||
gp.longitude::numeric, \
|
.filter(vigente=True, lineaparadero__id_linea=pk) \
|
||||||
gp.latitude::numeric \
|
.values('id_paradero') \
|
||||||
from gtfs_posiciones gp \
|
.all()
|
||||||
inner join linea l on (trim(gp.route_id)||'-'||trim(gp.direction_id::varchar)) = l.id_linea \
|
|
||||||
where l.id_linea = %s"
|
obj_buses = {}
|
||||||
|
array_buses = []
|
||||||
|
for p in paraderos:
|
||||||
|
key = f'stop_id:{p["id_paradero"]}'
|
||||||
|
data = r.get(key)
|
||||||
|
|
||||||
|
if data != None:
|
||||||
|
array_trayectos = json.loads(data)
|
||||||
|
for trayecto in array_trayectos:
|
||||||
|
key_route = f'{trayecto["route_id"]}-{trayecto["direction_id"]}'
|
||||||
|
if key_route == pk:
|
||||||
|
patente = trayecto["vehicle_license_plate"]
|
||||||
|
if patente not in obj_buses:
|
||||||
|
obj_buses[patente] = {
|
||||||
|
'Patente_vehiculo': trayecto["vehicle_license_plate"],
|
||||||
|
'latitude': trayecto["latitude"],
|
||||||
|
'longitude': trayecto["longitude"],
|
||||||
|
'speed': trayecto["speed"]
|
||||||
|
}
|
||||||
|
|
||||||
with connection.cursor() as cursor:
|
for patente in obj_buses:
|
||||||
cursor.execute(query, [ pk ])
|
array_buses.append(obj_buses[patente])
|
||||||
rows = cursor.fetchall()
|
|
||||||
|
return JsonResponse(array_buses, safe=False)
|
||||||
buses = []
|
|
||||||
for row in rows:
|
|
||||||
buses.append({
|
|
||||||
'route_color': row[0],
|
|
||||||
'route_text_color': row[1],
|
|
||||||
'Patente_vehiculo': row[2],
|
|
||||||
'speed': row[3],
|
|
||||||
'longitude': row[4],
|
|
||||||
'latitude': row[5],
|
|
||||||
})
|
|
||||||
|
|
||||||
return JsonResponse(buses, safe=False)
|
|
||||||
|
|
||||||
|
|
||||||
@action(detail=False, methods=['get'])
|
@action(detail=False, methods=['get'])
|
||||||
|
|
|
@ -9,4 +9,5 @@ PyJWT
|
||||||
pymongo
|
pymongo
|
||||||
Pillow
|
Pillow
|
||||||
openpyxl
|
openpyxl
|
||||||
google
|
google
|
||||||
|
redis[hiredis]
|
Loading…
Reference in New Issue