se agrega api/letreros-lur

develop/backend-letrero
Francisco Sandoval 2023-10-27 15:11:11 -03:00
parent d905f60682
commit 1df571069a
6 changed files with 80 additions and 3 deletions

View File

@ -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}}

View File

@ -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)

View File

@ -115,4 +115,9 @@ class RolSerializer(serializers.ModelSerializer):
class RolAplicacionSerializer(serializers.ModelSerializer):
class Meta:
model = models.RolAplicacion
fields = '__all__'
fields = '__all__'
class LetreroLUR_Serializer(serializers.ModelSerializer):
class Meta:
model = models.LetreroLUR
fields = '__all__'

View File

@ -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')

View File

@ -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

View File

@ -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)
})