From 1df571069a145b6c4629ad9c6e9508b2b3f70bc2 Mon Sep 17 00:00:00 2001 From: Francisco Sandoval Date: Fri, 27 Oct 2023 15:11:11 -0300 Subject: [PATCH] se agrega api/letreros-lur --- docs/rest/letreros_lur.rest | 21 +++++++++++++++++++++ project/api/models.py | 16 ++++++++++++++++ project/api/serializers.py | 7 ++++++- project/api/urls.py | 3 ++- project/api/views/letrero_lur.py | 9 +++++++++ project/api/views/mapa.py | 27 ++++++++++++++++++++++++++- 6 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 docs/rest/letreros_lur.rest create mode 100644 project/api/views/letrero_lur.py diff --git a/docs/rest/letreros_lur.rest b/docs/rest/letreros_lur.rest new file mode 100644 index 0000000..4277720 --- /dev/null +++ b/docs/rest/letreros_lur.rest @@ -0,0 +1,21 @@ + +@server = http://localhost:4000/api +@token = {{login.response.body.$.token}} + +### +# @name login +POST {{server}}/auth/ +Content-Type: application/json + +{ + "username": "0", + "password": "0" +} + +### +GET {{server}}/letreros-lur +Authorization: Bearer {{token}} + +### +GET {{server}}/letreros-lur/50U +Authorization: Bearer {{token}} \ No newline at end of file diff --git a/project/api/models.py b/project/api/models.py index 8efb9ff..4a46d0e 100755 --- a/project/api/models.py +++ b/project/api/models.py @@ -153,6 +153,22 @@ class GtfsTrips(models.Model): db_table = 'gtfs_trips' +class LetreroLUR(models.Model): + codigo = models.CharField(max_length=10, primary_key=True) + linea1 = models.CharField(max_length=50, blank=False, null=False) + linea2 = models.CharField(max_length=50) + linea3 = models.CharField(max_length=50) + linea4 = models.CharField(max_length=50) + bgcolor1 = models.CharField(max_length=20) + color1 = models.CharField(max_length=20) + bgcolor2 = models.CharField(max_length=20) + color2 = models.CharField(max_length=20) + + class Meta: + managed = True + db_table = 'letrero_lur' + + class Linea(models.Model): id_linea = models.CharField(max_length=150, primary_key=True) id_operador = models.ForeignKey('Operador', models.DO_NOTHING, db_column='id_operador', blank=True, null=True) diff --git a/project/api/serializers.py b/project/api/serializers.py index 4813857..1a5f9da 100755 --- a/project/api/serializers.py +++ b/project/api/serializers.py @@ -115,4 +115,9 @@ class RolSerializer(serializers.ModelSerializer): class RolAplicacionSerializer(serializers.ModelSerializer): class Meta: model = models.RolAplicacion - fields = '__all__' \ No newline at end of file + fields = '__all__' + +class LetreroLUR_Serializer(serializers.ModelSerializer): + class Meta: + model = models.LetreroLUR + fields = '__all__' \ No newline at end of file diff --git a/project/api/urls.py b/project/api/urls.py index c6b1e2e..e0f3df4 100755 --- a/project/api/urls.py +++ b/project/api/urls.py @@ -2,7 +2,7 @@ from django.urls import path, include from rest_framework import routers # from api import views from api.views import usuario, auth, aplicacion, tipo, persona, comuna, region, paradero, rol, rolaplicacion -from api.views import mapa, linea, operador +from api.views import mapa, linea, letrero_lur, operador from api.views import paradero_imagen from api.views import dispositivo @@ -21,6 +21,7 @@ router.register('regiones', region.RegionViewSet) router.register('paraderos', paradero.ParaderoViewSet) router.register('paraderos-image', paradero_imagen.ParaderoImagenListView, basename='paradero_imagen') router.register('lineas', linea.LineaViewSet) +router.register('letreros-lur', letrero_lur.LetreroLUR_ViewSet) router.register('operadores', operador.OperadorViewSet) router.register('roles', rol.RolViewSet) router.register('rolyaplicacion', rolaplicacion.RolAplicacionViewSet, basename='rol_aplicacion') diff --git a/project/api/views/letrero_lur.py b/project/api/views/letrero_lur.py new file mode 100644 index 0000000..3c09536 --- /dev/null +++ b/project/api/views/letrero_lur.py @@ -0,0 +1,9 @@ + +from rest_framework import viewsets +from rest_framework.response import Response +from rest_framework.decorators import action +from .. import models, serializers + +class LetreroLUR_ViewSet(viewsets.ModelViewSet): + queryset = models.LetreroLUR.objects.all() + serializer_class = serializers.LetreroLUR_Serializer diff --git a/project/api/views/mapa.py b/project/api/views/mapa.py index 7071cc0..c905c7f 100755 --- a/project/api/views/mapa.py +++ b/project/api/views/mapa.py @@ -45,6 +45,18 @@ def paraderos(request): def rutas(request): id_linea = request.GET.get('id_linea') + """ + SELECT gs.shape_pt_lat, gs.shape_pt_lon, gs.shape_pt_sequence + FROM gtfs_shape gs + WHERE gs.id_shape in ( + SELECT DISTINCT id_shape + FROM gtfs_trips gt + WHERE gt.id_linea = '2990' + ) + ORDER BY gs.id_shape, gs.sequence_coalesce + """ + + """ # Subquery para obtener los id_shape distintos de gtfs_trips subquery = GtfsTrips.objects.filter(id_linea = id_linea).values('id_shape').distinct() @@ -55,8 +67,21 @@ def rutas(request): ).filter(id_shape=F('id_shape_subquery')).order_by('shape_pt_sequence_coalesce') result = queryset.values('shape_pt_lat', 'shape_pt_lon', 'shape_pt_sequence') + """ + + # Subconsulta interna + subquery = GtfsTrips.objects.filter(id_linea=id_linea).values('id_shape').distinct()[:1] + + # Consulta principal + query = GtfsShape.objects.filter(id_shape__in=subquery).order_by('id_shape', 'shape_pt_sequence') + + # Obtener los campos requeridos + query = query.values('shape_pt_lat', 'shape_pt_lon', 'shape_pt_sequence') + + # Ejecutar la consulta + resultados = query.all() return JsonResponse({ 'google_api_key': google_api_key, - 'positions': list(result) + 'positions': list(resultados) }) \ No newline at end of file