from rest_framework import viewsets # from rest_framework.response import Response from rest_framework.decorators import action from django_filters.rest_framework import DjangoFilterBackend from django.db import connection from .. import models, serializers from django.http import JsonResponse class LineaViewSet(viewsets.ModelViewSet): queryset = models.Linea.objects.all() serializer_class = serializers.LineaSerializer filter_backends = [DjangoFilterBackend] 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)