From 6b91d1de42d416f17c3e4f5a5ae6331bf53205d8 Mon Sep 17 00:00:00 2001 From: Francisco Sandoval Date: Sat, 2 Dec 2023 21:52:39 -0300 Subject: [PATCH] se muestra colorFondo en GetInfoDevice --- docs/rest/dispositivo.rest | 8 +++ project/api/urls.py | 5 +- project/api/views/dispositivo.py | 2 +- project/api/views/linea.py | 115 ++++++++++++++++++------------- 4 files changed, 77 insertions(+), 53 deletions(-) diff --git a/docs/rest/dispositivo.rest b/docs/rest/dispositivo.rest index 900d081..49464f8 100644 --- a/docs/rest/dispositivo.rest +++ b/docs/rest/dispositivo.rest @@ -69,6 +69,14 @@ Content-Type: application/json +### + +GET {{server}}/lineas/proto?id_paradero=45086 +Authorization: Bearer {{token}} + + + + ### GET {{server}}/proto/ diff --git a/project/api/urls.py b/project/api/urls.py index f844c13..568f178 100755 --- a/project/api/urls.py +++ b/project/api/urls.py @@ -33,8 +33,5 @@ urlpatterns = [ # path('proto/', proto.status, name='proto_status'), path('mapas/paraderos/', mapa.paraderos, name='mapa-paraderos'), path('mapas/rutas/', mapa.rutas, name='mapa-rutas'), - path('paraderos/info-public/', paradero.info_public, name='paradero-infopublic'), - path('lineas/paraderos', linea.paraderos_x_linea, name='paraderos-x-linea'), - path('lineas/buses', linea.buses_x_linea, name='buses-x-linea'), - path('lineas/buses-2', linea.buses, name='buses-x-paradero'), + path('paraderos/info-public//', paradero.info_public, name='paradero-infopublic'), ] diff --git a/project/api/views/dispositivo.py b/project/api/views/dispositivo.py index c74b046..23e2f17 100644 --- a/project/api/views/dispositivo.py +++ b/project/api/views/dispositivo.py @@ -75,7 +75,7 @@ class DispositivoViewSet(viewsets.ModelViewSet): 'Linea': linea['linea'], 'Descripcion': linea['Descripcion'], 'TipoLocomocion': linea['tipo_locomocion'], - 'colorFondo': None, + 'colorFondo': linea['colorFondo'], 'colorLetra': linea['colorLetra'], 'Llegadas': linea['Llegadas'] } diff --git a/project/api/views/linea.py b/project/api/views/linea.py index 13b2db3..f0678b2 100755 --- a/project/api/views/linea.py +++ b/project/api/views/linea.py @@ -14,64 +14,83 @@ class LineaViewSet(viewsets.ModelViewSet): filterset_fields = ['id_operador', 'route_short_name', 'route_long_name', 'vigente'] + @action(detail=False, methods=['get']) + def proto(self, request, pk=None): + id_paradero = request.GET['id_paradero'] + query = "SELECT json_data \ + from gtfs_posiciones_json \ + where stop_id = %s" -def paraderos_x_linea(request): - pk = request.GET['id_linea'] - - paraderos = models.Paradero.objects \ - .filter(vigente=True, lineaparadero__id_linea=pk) \ - .values('id_paradero','stop_lat','stop_lon','stop_name') \ - .all() - return JsonResponse(list(paraderos), safe=False) - - - - -def buses_x_linea(request): - pk = request.GET['id_linea'] - - detalle_buses = [] - paraderos = models.Paradero.objects \ - .filter(vigente=True, lineaparadero__id_linea=pk) \ - .values('id_paradero') \ - .all() - - query = "SELECT json_data \ - from gtfs_posiciones_json \ - where stop_id = %s" - - for p in paraderos: - params = [ p['id_paradero'] ] with connection.cursor() as cursor: - cursor.execute(query, params) + cursor.execute(query, [ id_paradero ]) row = cursor.fetchone() - if row != None: - buses = list(filter(lambda linea: linea['linea'] == pk, row[0])) - for bus in buses: - for llegada in bus['Llegadas']: - data_bus = { - 'patente': llegada['patente'], - 'estimada_gps': llegada['EstimadaGPS'], - 'distancia_gps': llegada['DistanciaGPS'], - } - detalle_buses.append(data_bus) + return JsonResponse(row[0], safe=False) - return JsonResponse(detalle_buses, safe=False) + + @action(detail=False, methods=['get']) + def paraderos(self, request, pk=None): + pk = request.GET['id_linea'] + + paraderos = models.Paradero.objects \ + .filter(vigente=True, lineaparadero__id_linea=pk) \ + .values('id_paradero','stop_lat','stop_lon','stop_name') \ + .all() + return JsonResponse(list(paraderos), safe=False) + + + @action(detail=False, methods=['get']) + 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.latitude \ + from gtfs_posiciones gp \ + inner join linea l on gp.route_id = l.id_linea \ + where route_id = %s" + + with connection.cursor() as cursor: + cursor.execute(query, [ pk ]) + rows = cursor.fetchall() + + return JsonResponse(rows, safe=False) -def buses(request): + @action(detail=False, methods=['get']) + def buses_proto(self, request, pk=None): + pk = request.GET['id_linea'] - id_paradero = request.GET['id_paradero'] + detalle_buses = [] + paraderos = models.Paradero.objects \ + .filter(vigente=True, lineaparadero__id_linea=pk) \ + .values('id_paradero') \ + .all() - query = "SELECT json_data \ - from gtfs_posiciones_json \ - where stop_id = %s" + query = "SELECT json_data \ + from gtfs_posiciones_json \ + where stop_id = %s" - with connection.cursor() as cursor: - cursor.execute(query, [ id_paradero ]) - row = cursor.fetchone() + for p in paraderos: + params = [ p['id_paradero'] ] + with connection.cursor() as cursor: + cursor.execute(query, params) + row = cursor.fetchone() - return JsonResponse(row, safe=False) + if row != None: + buses = list(filter(lambda linea: linea['linea'] == pk, row[0])) + for bus in buses: + for llegada in bus['Llegadas']: + data_bus = { + 'patente': llegada['patente'], + 'estimada_gps': llegada['EstimadaGPS'], + 'distancia_gps': llegada['DistanciaGPS'], + } + detalle_buses.append(data_bus) + + return JsonResponse(detalle_buses, safe=False)