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' 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): class Linea(models.Model):
id_linea = models.CharField(max_length=150, primary_key=True) 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) id_operador = models.ForeignKey('Operador', models.DO_NOTHING, db_column='id_operador', blank=True, null=True)

View File

@ -116,3 +116,8 @@ class RolAplicacionSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = models.RolAplicacion 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 rest_framework import routers
# from api import views # from api import views
from api.views import usuario, auth, aplicacion, tipo, persona, comuna, region, paradero, rol, rolaplicacion 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 paradero_imagen
from api.views import dispositivo from api.views import dispositivo
@ -21,6 +21,7 @@ router.register('regiones', region.RegionViewSet)
router.register('paraderos', paradero.ParaderoViewSet) router.register('paraderos', paradero.ParaderoViewSet)
router.register('paraderos-image', paradero_imagen.ParaderoImagenListView, basename='paradero_imagen') router.register('paraderos-image', paradero_imagen.ParaderoImagenListView, basename='paradero_imagen')
router.register('lineas', linea.LineaViewSet) router.register('lineas', linea.LineaViewSet)
router.register('letreros-lur', letrero_lur.LetreroLUR_ViewSet)
router.register('operadores', operador.OperadorViewSet) router.register('operadores', operador.OperadorViewSet)
router.register('roles', rol.RolViewSet) router.register('roles', rol.RolViewSet)
router.register('rolyaplicacion', rolaplicacion.RolAplicacionViewSet, basename='rol_aplicacion') 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): def rutas(request):
id_linea = request.GET.get('id_linea') 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 para obtener los id_shape distintos de gtfs_trips
subquery = GtfsTrips.objects.filter(id_linea = id_linea).values('id_shape').distinct() 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') ).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') 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({ return JsonResponse({
'google_api_key': google_api_key, 'google_api_key': google_api_key,
'positions': list(result) 'positions': list(resultados)
}) })