forked from TDTP/admin_transporte_backend
89 lines
2.8 KiB
Python
89 lines
2.8 KiB
Python
![]() |
|
||
|
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
|
||
|
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):
|
||
|
input = json.loads(request.body)
|
||
|
whoami = input['whoami']
|
||
|
|
||
|
record = models.Paradero.objects \
|
||
|
.filter(dispositivo__id_dispositivo=whoami['idDispositivo']) \
|
||
|
.annotate(nro_paradero=F('id_paradero'), nombre_paradero=F('stop_name')) \
|
||
|
.first()
|
||
|
|
||
|
if (record):
|
||
|
return JsonResponse({
|
||
|
"WhoamiResponse": {
|
||
|
"NroParadero": record.nro_paradero,
|
||
|
"NombreParadero": record.nombre_paradero,
|
||
|
"Status": "OK"
|
||
|
}
|
||
|
})
|
||
|
|
||
|
# retorna json de no existente
|
||
|
return JsonResponse({
|
||
|
"WhoamiResponse": {
|
||
|
"Status": "NOK",
|
||
|
"errorString": "Dispositivo no identificado"
|
||
|
}
|
||
|
})
|
||
|
|
||
|
|
||
|
@action(detail=False, methods=['post'])
|
||
|
def getInfoDevice(self, request, pk=None):
|
||
|
input = json.loads(request.body)
|
||
|
getInfoDevice = input['GetInfoDevice']
|
||
|
|
||
|
|
||
|
record = models.Paradero.objects \
|
||
|
.filter(dispositivo__id_dispositivo=getInfoDevice['idDispositivo']) \
|
||
|
.annotate(nro_paradero=F('id_paradero'), nombre_paradero=F('stop_name')) \
|
||
|
.first()
|
||
|
|
||
|
query = "SELECT json_data \
|
||
|
from gtfs_posiciones_json \
|
||
|
where stop_id = %s"
|
||
|
|
||
|
params = [ record.nro_paradero ]
|
||
|
|
||
|
with connection.cursor() as cursor:
|
||
|
cursor.execute(query, params)
|
||
|
row = cursor.fetchone()
|
||
|
|
||
|
connection.close()
|
||
|
|
||
|
detalle_lineas = []
|
||
|
|
||
|
for linea in row[0]:
|
||
|
# logging.error(linea['linea'])
|
||
|
data_linea = {
|
||
|
'Linea': linea['linea'],
|
||
|
'Descripcion': linea['Descripcion'],
|
||
|
'TipoLocomocion': linea['tipo_locomocion'],
|
||
|
'colorFondo': linea['colorFondo'],
|
||
|
'colorLetra': linea['colorLetra'],
|
||
|
'Llegadas': linea['Llegadas']
|
||
|
}
|
||
|
detalle_lineas.append(data_linea)
|
||
|
|
||
|
return JsonResponse({
|
||
|
"GetInfoDeviceResponse": {
|
||
|
"DetalleLineas": detalle_lineas,
|
||
|
"MensajeParadero": "No considerar, uso futuro"
|
||
|
}
|
||
|
})
|