From cb7b946f5e36b1625fdec0f464bab4a282b641d1 Mon Sep 17 00:00:00 2001 From: Francisco Sandoval Date: Fri, 13 Oct 2023 18:28:24 -0300 Subject: [PATCH 1/3] se inicia api de dispositivo --- project/api/serializers.py | 5 ++++ project/api/urls.py | 2 ++ project/api/views/dispositivo.py | 33 ++++++++++++++++++++++ rest/dispositivo.rest | 47 ++++++++++++++++++++++++++++++++ 4 files changed, 87 insertions(+) create mode 100644 project/api/views/dispositivo.py create mode 100644 rest/dispositivo.rest diff --git a/project/api/serializers.py b/project/api/serializers.py index 2cb2b6e..4813857 100755 --- a/project/api/serializers.py +++ b/project/api/serializers.py @@ -9,6 +9,11 @@ class AplicacionSerializer(serializers.ModelSerializer): model = models.Aplicacion fields = '__all__' +class DispositivoSerializer(serializers.ModelSerializer): + class Meta: + model = models.Dispositivo + fields = '__all__' + class TipoDispositivoSerializer(serializers.ModelSerializer): class Meta: model = models.TipoDispositivo diff --git a/project/api/urls.py b/project/api/urls.py index f2d7908..c6b1e2e 100755 --- a/project/api/urls.py +++ b/project/api/urls.py @@ -4,11 +4,13 @@ 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, operador from api.views import paradero_imagen +from api.views import dispositivo router = routers.DefaultRouter() router.register('aplicaciones', aplicacion.AplicacionViewSet) router.register('usuarios', usuario.UsuarioViewSet) router.register('personas', persona.PersonaViewSet) +router.register('dispositivos', dispositivo.DispositivoViewSet) router.register('tipos/persona', tipo.TipoTratamientoPersonaViewSet) router.register('tipos/transporte', tipo.TipoTransporteViewSet) router.register('tipos/dispositivo', tipo.TipoDispositivoViewSet) diff --git a/project/api/views/dispositivo.py b/project/api/views/dispositivo.py new file mode 100644 index 0000000..5474b97 --- /dev/null +++ b/project/api/views/dispositivo.py @@ -0,0 +1,33 @@ + +from rest_framework import viewsets +from django.http import JsonResponse +from rest_framework.decorators import action +from .. import models, serializers +import json + +class DispositivoViewSet(viewsets.ModelViewSet): + queryset = models.Dispositivo.objects.all() + serializer_class = serializers.DispositivoSerializer + + @action(detail=False, methods=['get']) + def status(self, request, pk=None): + input = json.loads(request.body) + whoami = input['whoami'] + + if (whoami['idDispositivo'] == 'existe'): + return JsonResponse({ + "WhoamiResponse": { + "NroParadero": "AAA330", + "NombreParadero":"paradero 1 esq colon", + "Status": "OK" + } + }) + + # retorna json de no existente + return JsonResponse({ + "WhoamiResponse": { + "Status": "NOK", + "errorString": "Dispositivo no identificado" + } + }) + diff --git a/rest/dispositivo.rest b/rest/dispositivo.rest new file mode 100644 index 0000000..430e92b --- /dev/null +++ b/rest/dispositivo.rest @@ -0,0 +1,47 @@ + +@server = http://localhost:4000/api +@token = {{login.response.body.$.token}} + +### +# @name login +POST {{server}}/auth/ +Content-Type: application/json + +{ + "username": "0", + "password": "0" +} + + +### +# @name list +GET {{server}}/dispositivos +Authorization: Bearer {{token}} + +### +# @name status existente +GET {{server}}/dispositivos/status +Authorization: Bearer {{token}} +Content-Type: application/json + +{ + "whoami": { + "idDispositivo": "existe", + "KeyAutorizacion": "token" + } +} + + +### +# @name status no existente +GET {{server}}/dispositivos/status +Authorization: Bearer {{token}} +Content-Type: application/json + +{ + "whoami": { + "idDispositivo": "otro", + "KeyAutorizacion": "token" + } +} + From 5d8944acaa92c194ad937e5d1b733a6fcd88e79c Mon Sep 17 00:00:00 2001 From: Francisco Sandoval Date: Fri, 13 Oct 2023 19:00:54 -0300 Subject: [PATCH 2/3] se renombra status por whoami, se agrega getInfoDevice --- project/api/views/dispositivo.py | 77 +++++++++++++++++++++++++++++++- rest/dispositivo.rest | 24 ++++++++-- 2 files changed, 95 insertions(+), 6 deletions(-) diff --git a/project/api/views/dispositivo.py b/project/api/views/dispositivo.py index 5474b97..d4a5b2f 100644 --- a/project/api/views/dispositivo.py +++ b/project/api/views/dispositivo.py @@ -9,8 +9,8 @@ class DispositivoViewSet(viewsets.ModelViewSet): queryset = models.Dispositivo.objects.all() serializer_class = serializers.DispositivoSerializer - @action(detail=False, methods=['get']) - def status(self, request, pk=None): + @action(detail=False, methods=['post']) + def whoami(self, request, pk=None): input = json.loads(request.body) whoami = input['whoami'] @@ -31,3 +31,76 @@ class DispositivoViewSet(viewsets.ModelViewSet): } }) + + @action(detail=False, methods=['post']) + def getInfoDevice(self, request, pk=None): + input = json.loads(request.body) + + linea1 = { + "Linea": "803010", + "Descripción": "Tucapel", + "TipoLocomocion": 1, + "colorFondo": "Hexadecimal", + "colorLetra": "Hexadecimal", + "Llegadas": [ + { + "Patente": "RPDA-98", + "Planificada": "", + "EstimadaGPS": "15:08", + "DistanciaGPS": "1.0 KM" + }, + { + "Patente": "WYXYZ-22", + "Planificada": "", + "EstimadaGPS": "15:42", + "DistanciaGPS": "5.0 KM" + }, + { + "Patente": "ABCA-65", + "Planificada": "", + "EstimadaGPS": "16:18", + "DistanciaGPS": "13.4 KM" + } + ], + "Mensajelinea": "" + } + + linea2 = { + "Linea": "5487", + "Descripción": "Centauro", + "TipoLocomocion": 1, + "colorFondo": "Hexadecimal", + "colorLetra": "Hexadecimal", + "Llegadas": [ + { + "Patente": "PLKJ-32", + "Planificada": "15:13", + "EstimadaGPS": "", + "DistanciaGPS": "", + }, + { + "Patente": "GHLK-11", + "Planificada": "15:39", + "EstimadaGPS": "", + "DistanciaGPS": "", + }, + { + "Patente": "DFQW-55", + "Planificada": "16:22", + "EstimadaGPS": "", + "DistanciaGPS": "", + } + ], + "Mensajelinea": "Sin info. GPS, la informacion es estimada" + } + + detalle_lineas = [] + detalle_lineas.append(linea1) + detalle_lineas.append(linea2) + + return JsonResponse({ + "GetInfoDeviceResponse": { + "DetalleLineas": detalle_lineas, + "MensajeParadero": "No considerar, uso futuro" + } + }) \ No newline at end of file diff --git a/rest/dispositivo.rest b/rest/dispositivo.rest index 430e92b..7ecdd9b 100644 --- a/rest/dispositivo.rest +++ b/rest/dispositivo.rest @@ -19,8 +19,8 @@ GET {{server}}/dispositivos Authorization: Bearer {{token}} ### -# @name status existente -GET {{server}}/dispositivos/status +# @name whoami_existente +POST {{server}}/dispositivos/whoami/ Authorization: Bearer {{token}} Content-Type: application/json @@ -33,8 +33,8 @@ Content-Type: application/json ### -# @name status no existente -GET {{server}}/dispositivos/status +# @name whoami_no_existe +POST {{server}}/dispositivos/whoami/ Authorization: Bearer {{token}} Content-Type: application/json @@ -45,3 +45,19 @@ Content-Type: application/json } } + +### +# @name get_info_device +POST {{server}}/dispositivos/getInfoDevice/ +Authorization: Bearer {{token}} +Content-Type: application/json + +{ + "GetInfoDevice": { + "idDispositivo": "existe", + "KeyAutorizacion":"token" + } +} + + +### From 7bd19c741b678f7474095bd17a28ad46a4b7eea8 Mon Sep 17 00:00:00 2001 From: Francisco Sandoval Date: Fri, 13 Oct 2023 19:02:31 -0300 Subject: [PATCH 3/3] se quita acentos a campos de json --- project/api/views/dispositivo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project/api/views/dispositivo.py b/project/api/views/dispositivo.py index d4a5b2f..8210160 100644 --- a/project/api/views/dispositivo.py +++ b/project/api/views/dispositivo.py @@ -38,7 +38,7 @@ class DispositivoViewSet(viewsets.ModelViewSet): linea1 = { "Linea": "803010", - "Descripción": "Tucapel", + "Descripcion": "Tucapel", "TipoLocomocion": 1, "colorFondo": "Hexadecimal", "colorLetra": "Hexadecimal", @@ -67,7 +67,7 @@ class DispositivoViewSet(viewsets.ModelViewSet): linea2 = { "Linea": "5487", - "Descripción": "Centauro", + "Descripcion": "Centauro", "TipoLocomocion": 1, "colorFondo": "Hexadecimal", "colorLetra": "Hexadecimal",