From 53d81cc32d003e1afe5e420c192ef9a18ab0f40e Mon Sep 17 00:00:00 2001 From: Francisco Sandoval Date: Sat, 25 Nov 2023 19:31:37 -0300 Subject: [PATCH] se agrega informacion de dispositivos del paradero --- docs/rest/dispositivo.rest | 8 +++++++- project/api/serializers.py | 5 +++++ project/api/urls.py | 8 ++++---- project/api/views/dispositivo.py | 4 ++++ project/api/views/paradero.py | 18 +++++++++++++++++- 5 files changed, 37 insertions(+), 6 deletions(-) diff --git a/docs/rest/dispositivo.rest b/docs/rest/dispositivo.rest index b229e05..900d081 100644 --- a/docs/rest/dispositivo.rest +++ b/docs/rest/dispositivo.rest @@ -15,7 +15,13 @@ Content-Type: application/json ### # @name list -GET {{server}}/dispositivos +GET {{server}}/dispositivos?id_paradero=39530 +Authorization: Bearer {{token}} + + +### +# @name url_public_paradero +GET {{server}}/paraderos/info-public/39530 Authorization: Bearer {{token}} diff --git a/project/api/serializers.py b/project/api/serializers.py index aa4f7c6..bc02731 100755 --- a/project/api/serializers.py +++ b/project/api/serializers.py @@ -10,6 +10,11 @@ class AplicacionSerializer(serializers.ModelSerializer): fields = '__all__' class DispositivoSerializer(serializers.ModelSerializer): + tipo_dispositivo = serializers.SerializerMethodField() + + def get_tipo_dispositivo(self, row): + return model_to_dict(row.id_tipo_dispositivo) + class Meta: model = models.Dispositivo fields = '__all__' diff --git a/project/api/urls.py b/project/api/urls.py index 1114f80..f4e19d0 100755 --- a/project/api/urls.py +++ b/project/api/urls.py @@ -4,7 +4,7 @@ from rest_framework import routers from api.views import usuario, auth, aplicacion, tipo, persona, comuna, region, paradero, rol, rolaplicacion from api.views import mapa, linea, letrero_lur, operador from api.views import paradero_imagen, linea_paradero -from api.views import dispositivo +from api.views import dispositivo, proto router = routers.DefaultRouter() router.register('aplicaciones', aplicacion.AplicacionViewSet) @@ -30,8 +30,8 @@ router.register('rolyaplicacion', rolaplicacion.RolAplicacionViewSet, basename=' urlpatterns = [ path('', include(router.urls)), path('auth/', auth.jwt_login, name='auth'), + # path('proto/', proto.status, name='proto_status'), path('mapas/paraderos/', mapa.paraderos, name='mapa-paraderos'), path('mapas/rutas/', mapa.rutas, name='mapa-rutas'), - # path('paraderos/image/', paradero.image, name='paradero-image-list'), - # path('paraderos/image//', paradero.image_one, name='paradero-image-one'), -] \ No newline at end of file + path('paraderos/info-public/', paradero.info_public, name='paradero-infopublic'), +] diff --git a/project/api/views/dispositivo.py b/project/api/views/dispositivo.py index 9a3de57..c74b046 100644 --- a/project/api/views/dispositivo.py +++ b/project/api/views/dispositivo.py @@ -3,6 +3,7 @@ from rest_framework import viewsets from django.http import JsonResponse from django.db.models import F from django.db import connection +from django_filters.rest_framework import DjangoFilterBackend from rest_framework.decorators import action from .. import models, serializers import json @@ -11,6 +12,9 @@ import logging class DispositivoViewSet(viewsets.ModelViewSet): queryset = models.Dispositivo.objects.all() serializer_class = serializers.DispositivoSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['id_paradero', 'id_tipo_dispositivo'] + @action(detail=False, methods=['post']) def whoami(self, request, pk=None): diff --git a/project/api/views/paradero.py b/project/api/views/paradero.py index 0fa7111..94e2c57 100755 --- a/project/api/views/paradero.py +++ b/project/api/views/paradero.py @@ -1,3 +1,4 @@ +from django.http import JsonResponse from rest_framework import viewsets from api.serializers import ParaderoSerializer from api.models import Paradero @@ -5,4 +6,19 @@ import logging class ParaderoViewSet(viewsets.ModelViewSet): queryset = Paradero.objects.all() - serializer_class = ParaderoSerializer \ No newline at end of file + serializer_class = ParaderoSerializer + + +def info_public(request, pk): + + if hasattr(request.META,'HTTP_REFERER'): + referer = request.META['HTTP_REFERER'] + else: + protocol = request.scheme + host = request.META['HTTP_HOST'] + port = request.META['SERVER_PORT'] + referer = f'{protocol}://{host}:{port}' + + return JsonResponse({ + 'url_public': f'{referer}/public/infoStop?codigoParadero={pk}' + }) \ No newline at end of file