se muestra colorFondo en GetInfoDevice

develop/backend
Francisco Sandoval 2023-12-02 21:52:39 -03:00
parent c44b79285a
commit 6b91d1de42
4 changed files with 77 additions and 53 deletions

View File

@ -69,6 +69,14 @@ Content-Type: application/json
###
GET {{server}}/lineas/proto?id_paradero=45086
Authorization: Bearer {{token}}
### ###
GET {{server}}/proto/ GET {{server}}/proto/

View File

@ -33,8 +33,5 @@ urlpatterns = [
# path('proto/', proto.status, name='proto_status'), # path('proto/', proto.status, name='proto_status'),
path('mapas/paraderos/', mapa.paraderos, name='mapa-paraderos'), path('mapas/paraderos/', mapa.paraderos, name='mapa-paraderos'),
path('mapas/rutas/', mapa.rutas, name='mapa-rutas'), path('mapas/rutas/', mapa.rutas, name='mapa-rutas'),
path('paraderos/info-public/<int:pk>', paradero.info_public, name='paradero-infopublic'), path('paraderos/info-public/<int:pk>/', 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'),
] ]

View File

@ -75,7 +75,7 @@ class DispositivoViewSet(viewsets.ModelViewSet):
'Linea': linea['linea'], 'Linea': linea['linea'],
'Descripcion': linea['Descripcion'], 'Descripcion': linea['Descripcion'],
'TipoLocomocion': linea['tipo_locomocion'], 'TipoLocomocion': linea['tipo_locomocion'],
'colorFondo': None, 'colorFondo': linea['colorFondo'],
'colorLetra': linea['colorLetra'], 'colorLetra': linea['colorLetra'],
'Llegadas': linea['Llegadas'] 'Llegadas': linea['Llegadas']
} }

View File

@ -14,64 +14,83 @@ class LineaViewSet(viewsets.ModelViewSet):
filterset_fields = ['id_operador', 'route_short_name', 'route_long_name', 'vigente'] 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: with connection.cursor() as cursor:
cursor.execute(query, params) cursor.execute(query, [ id_paradero ])
row = cursor.fetchone() row = cursor.fetchone()
if row != None: return JsonResponse(row[0], safe=False)
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)
@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 \ query = "SELECT json_data \
from gtfs_posiciones_json \ from gtfs_posiciones_json \
where stop_id = %s" where stop_id = %s"
with connection.cursor() as cursor: for p in paraderos:
cursor.execute(query, [ id_paradero ]) params = [ p['id_paradero'] ]
row = cursor.fetchone() 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)