avance paraderos y buses por linea
parent
c89c2bd787
commit
98b11c6622
|
@ -191,7 +191,7 @@ class Linea(models.Model):
|
||||||
class LineaParadero(models.Model):
|
class LineaParadero(models.Model):
|
||||||
id_linea_paradero = models.AutoField(primary_key=True)
|
id_linea_paradero = models.AutoField(primary_key=True)
|
||||||
id_linea = models.ForeignKey(Linea, models.DO_NOTHING, db_column='id_linea')
|
id_linea = models.ForeignKey(Linea, models.DO_NOTHING, db_column='id_linea')
|
||||||
id_paradero = models.ForeignKey('Paradero', models.DO_NOTHING, db_column='id_paradero')
|
id_paradero = models.ForeignKey('Paradero', models.DO_NOTHING, db_column='id_paradero', blank=True, null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
managed = False
|
managed = False
|
||||||
|
|
|
@ -34,4 +34,6 @@ urlpatterns = [
|
||||||
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/<int:pk>/paraderos', linea.paraderos_x_linea, name='paraderos-x-linea'),
|
||||||
|
path('lineas/<int:pk>/buses', linea.buses_x_linea, name='buses-x-linea'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,12 +1,51 @@
|
||||||
|
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from rest_framework.response import Response
|
# from rest_framework.response import Response
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from django_filters.rest_framework import DjangoFilterBackend
|
from django_filters.rest_framework import DjangoFilterBackend
|
||||||
|
from django.db import connection
|
||||||
from .. import models, serializers
|
from .. import models, serializers
|
||||||
|
from django.http import JsonResponse
|
||||||
|
|
||||||
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
|
||||||
filter_backends = [DjangoFilterBackend]
|
filter_backends = [DjangoFilterBackend]
|
||||||
filterset_fields = ['id_operador', 'route_short_name', 'route_long_name', 'vigente']
|
filterset_fields = ['id_operador', 'route_short_name', 'route_long_name', 'vigente']
|
||||||
|
|
||||||
|
def paraderos_x_linea(request, pk):
|
||||||
|
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):
|
||||||
|
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)
|
||||||
|
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(detalle_buses, safe=False)
|
||||||
|
|
Loading…
Reference in New Issue