lee los trayecto de redis

francisco/photos
Francisco Sandoval 2023-12-12 22:49:05 -03:00
parent c80988d3ee
commit cdc917678b
2 changed files with 38 additions and 29 deletions

View File

@ -6,8 +6,12 @@ from django_filters.rest_framework import DjangoFilterBackend
from django.db import connection
from .. import models, serializers
from django.http import JsonResponse
from os import getenv
import redis
import json
import logging
class LineaViewSet(viewsets.ModelViewSet):
queryset = models.Linea.objects.all()
serializer_class = serializers.LineaSerializer
@ -34,8 +38,6 @@ class LineaViewSet(viewsets.ModelViewSet):
def paraderos(self, request, pk=None):
pk = request.GET['id_linea']
logging.error(request.GET)
paraderos = models.Paradero.objects \
.filter(vigente=True, lineaparadero__id_linea=pk) \
.values('id_paradero','stop_lat','stop_lon','stop_name') \
@ -47,33 +49,39 @@ class LineaViewSet(viewsets.ModelViewSet):
def buses(self, request, pk=None):
pk = request.GET['id_linea']
query = "SELECT distinct \
l.route_color, \
l.route_text_color, \
gp.vehicle_license_plate as Patente_vehiculo, \
speed::numeric(5,2) as speed, \
gp.longitude::numeric, \
gp.latitude::numeric \
from gtfs_posiciones gp \
inner join linea l on (trim(gp.route_id)||'-'||trim(gp.direction_id::varchar)) = l.id_linea \
where l.id_linea = %s"
db_host = getenv('DB_REDIS_HOST')
db_port = getenv('DB_REDIS_PORT')
r = redis.Redis(host=db_host, port=db_port, decode_responses=True)
paraderos = models.Paradero.objects \
.filter(vigente=True, lineaparadero__id_linea=pk) \
.values('id_paradero') \
.all()
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:
cursor.execute(query, [ pk ])
rows = cursor.fetchall()
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)
for patente in obj_buses:
array_buses.append(obj_buses[patente])
return JsonResponse(array_buses, safe=False)
@action(detail=False, methods=['get'])

View File

@ -9,4 +9,5 @@ PyJWT
pymongo
Pillow
openpyxl
google
google
redis[hiredis]