avance lectura archivo proto

develop/backend
Francisco Sandoval 2023-12-05 10:31:21 -03:00
parent cb77216f2f
commit b0fe0848b8
8 changed files with 171 additions and 11 deletions

View File

@ -70,7 +70,6 @@ Content-Type: application/json
### ###
GET {{server}}/lineas/proto?id_paradero=45086 GET {{server}}/lineas/proto?id_paradero=45086
Authorization: Bearer {{token}} Authorization: Bearer {{token}}
@ -78,6 +77,5 @@ Authorization: Bearer {{token}}
### ###
GET {{server}}/lineas/buses_proto/?id_linea=730-0
GET {{server}}/proto/
Authorization: Bearer {{token}} Authorization: Bearer {{token}}

View File

@ -0,0 +1,18 @@
@server = http://localhost:3000/api
@token = {{login.response.body.$.token}}
###
# @name login
POST {{server}}/auth/
Content-Type: application/json
{
"username": "usuario1",
"password": "usuario1"
}
###
# @name protodata
GET {{server}}/proto/status
Authorization: Bearer {{token}}

View File

@ -5,6 +5,7 @@ from api.views import usuario, auth, aplicacion, tipo, persona, comuna, region,
from api.views import mapa, linea, letrero_lur, operador from api.views import mapa, linea, letrero_lur, operador
from api.views import paradero_imagen, linea_paradero from api.views import paradero_imagen, linea_paradero
from api.views import dispositivo from api.views import dispositivo
from api.views import proto
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register('aplicaciones', aplicacion.AplicacionViewSet) router.register('aplicaciones', aplicacion.AplicacionViewSet)
@ -30,8 +31,8 @@ router.register('rolyaplicacion', rolaplicacion.RolAplicacionViewSet, basename='
urlpatterns = [ urlpatterns = [
path('', include(router.urls)), path('', include(router.urls)),
path('auth/', auth.jwt_login, name='auth'), path('auth/', auth.jwt_login, name='auth'),
# path('proto/', proto.status, name='proto_status'),
path('mapas/paraderos/', mapa.paraderos, name='mapa-paraderos'), path('mapas/paraderos/', mapa.paraderos, name='mapa-paraderos'),
path('mapas/rutas/', mapa.rutas, name='mapa-rutas'), path('mapas/rutas/', mapa.rutas, name='mapa-rutas'),
path('paraderos/info-public/<int:pk>/', paradero.info_public, name='paradero-infopublic'), path('paraderos/info-public/<int:pk>/', paradero.info_public, name='paradero-infopublic'),
path('proto/status/', proto.status, name='proto_status'),
] ]

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -6,6 +6,7 @@ from django_filters.rest_framework import DjangoFilterBackend
from django.db import connection from django.db import connection
from .. import models, serializers from .. import models, serializers
from django.http import JsonResponse from django.http import JsonResponse
import logging
class LineaViewSet(viewsets.ModelViewSet): class LineaViewSet(viewsets.ModelViewSet):
queryset = models.Linea.objects.all() queryset = models.Linea.objects.all()
@ -78,6 +79,12 @@ class LineaViewSet(viewsets.ModelViewSet):
def buses_proto(self, request, pk=None): def buses_proto(self, request, pk=None):
pk = request.GET['id_linea'] pk = request.GET['id_linea']
linea = models.Linea.objects \
.filter(id_linea=pk) \
.first()
logging.error(linea)
detalle_buses = [] detalle_buses = []
paraderos = models.Paradero.objects \ paraderos = models.Paradero.objects \
.filter(vigente=True, lineaparadero__id_linea=pk) \ .filter(vigente=True, lineaparadero__id_linea=pk) \
@ -89,13 +96,14 @@ class LineaViewSet(viewsets.ModelViewSet):
where stop_id = %s" where stop_id = %s"
for p in paraderos: for p in paraderos:
params = [ p['id_paradero'] ] id_paradero = p['id_paradero']
with connection.cursor() as cursor:
cursor.execute(query, params)
row = cursor.fetchone()
if row != None: with connection.cursor() as cursor:
buses = list(filter(lambda linea: linea['linea'] == pk, row[0])) cursor.execute(query, [ id_paradero ])
datajson = cursor.fetchone()
if datajson != None:
buses = list(filter(lambda rowjson: rowjson['Descripcion'] == linea.route_short_name, datajson[0]))
for bus in buses: for bus in buses:
for llegada in bus['Llegadas']: for llegada in bus['Llegadas']:
data_bus = { data_bus = {

View File

@ -0,0 +1,46 @@
from django.views.decorators.csrf import csrf_exempt
from rest_framework.decorators import action, api_view
from api.utils import gtfs_realtime_pb2
from project.settings import BASE_DIR
from django.http import JsonResponse
import logging
def status(request):
nombre_archivo_proto = f'{BASE_DIR}/api/utils/demo.proto'
with open(nombre_archivo_proto, 'rb') as proto_file:
feed = gtfs_realtime_pb2.FeedMessage()
feed.ParseFromString(proto_file.read())
data = {} #get_object(feed)
# logging.error(dir(feed))
# logging.error(feed.header)
# logging.error(dir(feed.entity))
logging.error(feed.entity[0])
# logging.error(dir(feed.entity[0].trip_update))
return JsonResponse(data, safe=False)
def get_object(obj1, obj2 = {}, level = 1):
attributes = dir(obj1)
for attr in attributes:
if attr[0:1] != '_':
try:
for elem in obj1[attr]:
logging.error(elem)
except:
logging.error(attr)
pass
return obj2
def is_subscriptable(obj):
return hasattr(obj, '__getitem__')
def is_iterable(obj):
try:
iter(obj)
return True
except TypeError:
return False

View File

@ -9,3 +9,4 @@ PyJWT
pymongo pymongo
Pillow Pillow
openpyxl openpyxl
google