diff --git a/docs/rest/dispositivo.rest b/docs/rest/dispositivo.rest index 49464f8..013a9a6 100644 --- a/docs/rest/dispositivo.rest +++ b/docs/rest/dispositivo.rest @@ -70,7 +70,6 @@ Content-Type: application/json ### - GET {{server}}/lineas/proto?id_paradero=45086 Authorization: Bearer {{token}} @@ -78,6 +77,5 @@ Authorization: Bearer {{token}} ### - -GET {{server}}/proto/ +GET {{server}}/lineas/buses_proto/?id_linea=730-0 Authorization: Bearer {{token}} \ No newline at end of file diff --git a/docs/rest/proto.rest b/docs/rest/proto.rest new file mode 100644 index 0000000..11fa00c --- /dev/null +++ b/docs/rest/proto.rest @@ -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}} diff --git a/project/api/urls.py b/project/api/urls.py index 568f178..cd00f9f 100755 --- a/project/api/urls.py +++ b/project/api/urls.py @@ -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 paradero_imagen, linea_paradero from api.views import dispositivo +from api.views import proto router = routers.DefaultRouter() router.register('aplicaciones', aplicacion.AplicacionViewSet) @@ -30,8 +31,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/info-public//', paradero.info_public, name='paradero-infopublic'), + path('proto/status/', proto.status, name='proto_status'), ] diff --git a/project/api/utils/demo.proto b/project/api/utils/demo.proto new file mode 100644 index 0000000..f80865b Binary files /dev/null and b/project/api/utils/demo.proto differ diff --git a/project/api/utils/gtfs_realtime_pb2.py b/project/api/utils/gtfs_realtime_pb2.py new file mode 100644 index 0000000..fe8c51a --- /dev/null +++ b/project/api/utils/gtfs_realtime_pb2.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: utils/gtfs-realtime.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19utils/gtfs-realtime.proto\x12\x10transit_realtime\"y\n\x0b\x46\x65\x65\x64Message\x12,\n\x06header\x18\x01 \x02(\x0b\x32\x1c.transit_realtime.FeedHeader\x12,\n\x06\x65ntity\x18\x02 \x03(\x0b\x32\x1c.transit_realtime.FeedEntity*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xd7\x01\n\nFeedHeader\x12\x1d\n\x15gtfs_realtime_version\x18\x01 \x02(\t\x12Q\n\x0eincrementality\x18\x02 \x01(\x0e\x32+.transit_realtime.FeedHeader.Incrementality:\x0c\x46ULL_DATASET\x12\x11\n\ttimestamp\x18\x03 \x01(\x04\"4\n\x0eIncrementality\x12\x10\n\x0c\x46ULL_DATASET\x10\x00\x12\x10\n\x0c\x44IFFERENTIAL\x10\x01*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xfa\x01\n\nFeedEntity\x12\n\n\x02id\x18\x01 \x02(\t\x12\x19\n\nis_deleted\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x31\n\x0btrip_update\x18\x03 \x01(\x0b\x32\x1c.transit_realtime.TripUpdate\x12\x32\n\x07vehicle\x18\x04 \x01(\x0b\x32!.transit_realtime.VehiclePosition\x12&\n\x05\x61lert\x18\x05 \x01(\x0b\x32\x17.transit_realtime.Alert\x12&\n\x05shape\x18\x06 \x01(\x0b\x32\x17.transit_realtime.Shape*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xeb\x08\n\nTripUpdate\x12.\n\x04trip\x18\x01 \x02(\x0b\x32 .transit_realtime.TripDescriptor\x12\x34\n\x07vehicle\x18\x03 \x01(\x0b\x32#.transit_realtime.VehicleDescriptor\x12\x45\n\x10stop_time_update\x18\x02 \x03(\x0b\x32+.transit_realtime.TripUpdate.StopTimeUpdate\x12\x11\n\ttimestamp\x18\x04 \x01(\x04\x12\r\n\x05\x64\x65lay\x18\x05 \x01(\x05\x12\x44\n\x0ftrip_properties\x18\x06 \x01(\x0b\x32+.transit_realtime.TripUpdate.TripProperties\x1aQ\n\rStopTimeEvent\x12\r\n\x05\x64\x65lay\x18\x01 \x01(\x05\x12\x0c\n\x04time\x18\x02 \x01(\x03\x12\x13\n\x0buncertainty\x18\x03 \x01(\x05*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\x1a\xf7\x04\n\x0eStopTimeUpdate\x12\x15\n\rstop_sequence\x18\x01 \x01(\r\x12\x0f\n\x07stop_id\x18\x04 \x01(\t\x12;\n\x07\x61rrival\x18\x02 \x01(\x0b\x32*.transit_realtime.TripUpdate.StopTimeEvent\x12=\n\tdeparture\x18\x03 \x01(\x0b\x32*.transit_realtime.TripUpdate.StopTimeEvent\x12U\n\x1a\x64\x65parture_occupancy_status\x18\x07 \x01(\x0e\x32\x31.transit_realtime.VehiclePosition.OccupancyStatus\x12j\n\x15schedule_relationship\x18\x05 \x01(\x0e\x32@.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship:\tSCHEDULED\x12\\\n\x14stop_time_properties\x18\x06 \x01(\x0b\x32>.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties\x1a>\n\x12StopTimeProperties\x12\x18\n\x10\x61ssigned_stop_id\x18\x01 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"P\n\x14ScheduleRelationship\x12\r\n\tSCHEDULED\x10\x00\x12\x0b\n\x07SKIPPED\x10\x01\x12\x0b\n\x07NO_DATA\x10\x02\x12\x0f\n\x0bUNSCHEDULED\x10\x03*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\x1ak\n\x0eTripProperties\x12\x0f\n\x07trip_id\x18\x01 \x01(\t\x12\x12\n\nstart_date\x18\x02 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\t\x12\x10\n\x08shape_id\x18\x04 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xdf\t\n\x0fVehiclePosition\x12.\n\x04trip\x18\x01 \x01(\x0b\x32 .transit_realtime.TripDescriptor\x12\x34\n\x07vehicle\x18\x08 \x01(\x0b\x32#.transit_realtime.VehicleDescriptor\x12,\n\x08position\x18\x02 \x01(\x0b\x32\x1a.transit_realtime.Position\x12\x1d\n\x15\x63urrent_stop_sequence\x18\x03 \x01(\r\x12\x0f\n\x07stop_id\x18\x07 \x01(\t\x12Z\n\x0e\x63urrent_status\x18\x04 \x01(\x0e\x32\x33.transit_realtime.VehiclePosition.VehicleStopStatus:\rIN_TRANSIT_TO\x12\x11\n\ttimestamp\x18\x05 \x01(\x04\x12K\n\x10\x63ongestion_level\x18\x06 \x01(\x0e\x32\x31.transit_realtime.VehiclePosition.CongestionLevel\x12K\n\x10occupancy_status\x18\t \x01(\x0e\x32\x31.transit_realtime.VehiclePosition.OccupancyStatus\x12\x1c\n\x14occupancy_percentage\x18\n \x01(\r\x12Q\n\x16multi_carriage_details\x18\x0b \x03(\x0b\x32\x31.transit_realtime.VehiclePosition.CarriageDetails\x1a\xd9\x01\n\x0f\x43\x61rriageDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12^\n\x10occupancy_status\x18\x03 \x01(\x0e\x32\x31.transit_realtime.VehiclePosition.OccupancyStatus:\x11NO_DATA_AVAILABLE\x12 \n\x14occupancy_percentage\x18\x04 \x01(\x05:\x02-1\x12\x19\n\x11\x63\x61rriage_sequence\x18\x05 \x01(\r*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"G\n\x11VehicleStopStatus\x12\x0f\n\x0bINCOMING_AT\x10\x00\x12\x0e\n\nSTOPPED_AT\x10\x01\x12\x11\n\rIN_TRANSIT_TO\x10\x02\"}\n\x0f\x43ongestionLevel\x12\x1c\n\x18UNKNOWN_CONGESTION_LEVEL\x10\x00\x12\x14\n\x10RUNNING_SMOOTHLY\x10\x01\x12\x0f\n\x0bSTOP_AND_GO\x10\x02\x12\x0e\n\nCONGESTION\x10\x03\x12\x15\n\x11SEVERE_CONGESTION\x10\x04\"\xd9\x01\n\x0fOccupancyStatus\x12\t\n\x05\x45MPTY\x10\x00\x12\x18\n\x14MANY_SEATS_AVAILABLE\x10\x01\x12\x17\n\x13\x46\x45W_SEATS_AVAILABLE\x10\x02\x12\x16\n\x12STANDING_ROOM_ONLY\x10\x03\x12\x1e\n\x1a\x43RUSHED_STANDING_ROOM_ONLY\x10\x04\x12\x08\n\x04\x46ULL\x10\x05\x12\x1c\n\x18NOT_ACCEPTING_PASSENGERS\x10\x06\x12\x15\n\x11NO_DATA_AVAILABLE\x10\x07\x12\x11\n\rNOT_BOARDABLE\x10\x08*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xeb\n\n\x05\x41lert\x12\x32\n\ractive_period\x18\x01 \x03(\x0b\x32\x1b.transit_realtime.TimeRange\x12\x39\n\x0finformed_entity\x18\x05 \x03(\x0b\x32 .transit_realtime.EntitySelector\x12;\n\x05\x63\x61use\x18\x06 \x01(\x0e\x32\x1d.transit_realtime.Alert.Cause:\rUNKNOWN_CAUSE\x12>\n\x06\x65\x66\x66\x65\x63t\x18\x07 \x01(\x0e\x32\x1e.transit_realtime.Alert.Effect:\x0eUNKNOWN_EFFECT\x12/\n\x03url\x18\x08 \x01(\x0b\x32\".transit_realtime.TranslatedString\x12\x37\n\x0bheader_text\x18\n \x01(\x0b\x32\".transit_realtime.TranslatedString\x12<\n\x10\x64\x65scription_text\x18\x0b \x01(\x0b\x32\".transit_realtime.TranslatedString\x12;\n\x0ftts_header_text\x18\x0c \x01(\x0b\x32\".transit_realtime.TranslatedString\x12@\n\x14tts_description_text\x18\r \x01(\x0b\x32\".transit_realtime.TranslatedString\x12O\n\x0eseverity_level\x18\x0e \x01(\x0e\x32%.transit_realtime.Alert.SeverityLevel:\x10UNKNOWN_SEVERITY\x12\x30\n\x05image\x18\x0f \x01(\x0b\x32!.transit_realtime.TranslatedImage\x12\x42\n\x16image_alternative_text\x18\x10 \x01(\x0b\x32\".transit_realtime.TranslatedString\x12\x38\n\x0c\x63\x61use_detail\x18\x11 \x01(\x0b\x32\".transit_realtime.TranslatedString\x12\x39\n\reffect_detail\x18\x12 \x01(\x0b\x32\".transit_realtime.TranslatedString\"\xd8\x01\n\x05\x43\x61use\x12\x11\n\rUNKNOWN_CAUSE\x10\x01\x12\x0f\n\x0bOTHER_CAUSE\x10\x02\x12\x15\n\x11TECHNICAL_PROBLEM\x10\x03\x12\n\n\x06STRIKE\x10\x04\x12\x11\n\rDEMONSTRATION\x10\x05\x12\x0c\n\x08\x41\x43\x43IDENT\x10\x06\x12\x0b\n\x07HOLIDAY\x10\x07\x12\x0b\n\x07WEATHER\x10\x08\x12\x0f\n\x0bMAINTENANCE\x10\t\x12\x10\n\x0c\x43ONSTRUCTION\x10\n\x12\x13\n\x0fPOLICE_ACTIVITY\x10\x0b\x12\x15\n\x11MEDICAL_EMERGENCY\x10\x0c\"\xdd\x01\n\x06\x45\x66\x66\x65\x63t\x12\x0e\n\nNO_SERVICE\x10\x01\x12\x13\n\x0fREDUCED_SERVICE\x10\x02\x12\x16\n\x12SIGNIFICANT_DELAYS\x10\x03\x12\n\n\x06\x44\x45TOUR\x10\x04\x12\x16\n\x12\x41\x44\x44ITIONAL_SERVICE\x10\x05\x12\x14\n\x10MODIFIED_SERVICE\x10\x06\x12\x10\n\x0cOTHER_EFFECT\x10\x07\x12\x12\n\x0eUNKNOWN_EFFECT\x10\x08\x12\x0e\n\nSTOP_MOVED\x10\t\x12\r\n\tNO_EFFECT\x10\n\x12\x17\n\x13\x41\x43\x43\x45SSIBILITY_ISSUE\x10\x0b\"H\n\rSeverityLevel\x12\x14\n\x10UNKNOWN_SEVERITY\x10\x01\x12\x08\n\x04INFO\x10\x02\x12\x0b\n\x07WARNING\x10\x03\x12\n\n\x06SEVERE\x10\x04*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"7\n\tTimeRange\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"q\n\x08Position\x12\x10\n\x08latitude\x18\x01 \x02(\x02\x12\x11\n\tlongitude\x18\x02 \x02(\x02\x12\x0f\n\x07\x62\x65\x61ring\x18\x03 \x01(\x02\x12\x10\n\x08odometer\x18\x04 \x01(\x01\x12\r\n\x05speed\x18\x05 \x01(\x02*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xdb\x02\n\x0eTripDescriptor\x12\x0f\n\x07trip_id\x18\x01 \x01(\t\x12\x10\n\x08route_id\x18\x05 \x01(\t\x12\x14\n\x0c\x64irection_id\x18\x06 \x01(\r\x12\x12\n\nstart_time\x18\x02 \x01(\t\x12\x12\n\nstart_date\x18\x03 \x01(\t\x12T\n\x15schedule_relationship\x18\x04 \x01(\x0e\x32\x35.transit_realtime.TripDescriptor.ScheduleRelationship\"\x81\x01\n\x14ScheduleRelationship\x12\r\n\tSCHEDULED\x10\x00\x12\t\n\x05\x41\x44\x44\x45\x44\x10\x01\x12\x0f\n\x0bUNSCHEDULED\x10\x02\x12\x0c\n\x08\x43\x41NCELED\x10\x03\x12\x13\n\x0bREPLACEMENT\x10\x05\x1a\x02\x08\x01\x12\x0e\n\nDUPLICATED\x10\x06\x12\x0b\n\x07\x44\x45LETED\x10\x07*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xa3\x02\n\x11VehicleDescriptor\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x15\n\rlicense_plate\x18\x03 \x01(\t\x12\x61\n\x15wheelchair_accessible\x18\x04 \x01(\x0e\x32\x38.transit_realtime.VehicleDescriptor.WheelchairAccessible:\x08NO_VALUE\"i\n\x14WheelchairAccessible\x12\x0c\n\x08NO_VALUE\x10\x00\x12\x0b\n\x07UNKNOWN\x10\x01\x12\x19\n\x15WHEELCHAIR_ACCESSIBLE\x10\x02\x12\x1b\n\x17WHEELCHAIR_INACCESSIBLE\x10\x03*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xb0\x01\n\x0e\x45ntitySelector\x12\x11\n\tagency_id\x18\x01 \x01(\t\x12\x10\n\x08route_id\x18\x02 \x01(\t\x12\x12\n\nroute_type\x18\x03 \x01(\x05\x12.\n\x04trip\x18\x04 \x01(\x0b\x32 .transit_realtime.TripDescriptor\x12\x0f\n\x07stop_id\x18\x05 \x01(\t\x12\x14\n\x0c\x64irection_id\x18\x06 \x01(\r*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xa6\x01\n\x10TranslatedString\x12\x43\n\x0btranslation\x18\x01 \x03(\x0b\x32..transit_realtime.TranslatedString.Translation\x1a=\n\x0bTranslation\x12\x0c\n\x04text\x18\x01 \x02(\t\x12\x10\n\x08language\x18\x02 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xc1\x01\n\x0fTranslatedImage\x12I\n\x0flocalized_image\x18\x01 \x03(\x0b\x32\x30.transit_realtime.TranslatedImage.LocalizedImage\x1aS\n\x0eLocalizedImage\x12\x0b\n\x03url\x18\x01 \x02(\t\x12\x12\n\nmedia_type\x18\x02 \x02(\t\x12\x10\n\x08language\x18\x03 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"C\n\x05Shape\x12\x10\n\x08shape_id\x18\x01 \x01(\t\x12\x18\n\x10\x65ncoded_polyline\x18\x02 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90NB\x1d\n\x1b\x63om.google.transit.realtime') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'utils.gtfs_realtime_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\033com.google.transit.realtime' + _TRIPDESCRIPTOR_SCHEDULERELATIONSHIP.values_by_name["REPLACEMENT"]._options = None + _TRIPDESCRIPTOR_SCHEDULERELATIONSHIP.values_by_name["REPLACEMENT"]._serialized_options = b'\010\001' + _globals['_FEEDMESSAGE']._serialized_start=47 + _globals['_FEEDMESSAGE']._serialized_end=168 + _globals['_FEEDHEADER']._serialized_start=171 + _globals['_FEEDHEADER']._serialized_end=386 + _globals['_FEEDHEADER_INCREMENTALITY']._serialized_start=318 + _globals['_FEEDHEADER_INCREMENTALITY']._serialized_end=370 + _globals['_FEEDENTITY']._serialized_start=389 + _globals['_FEEDENTITY']._serialized_end=639 + _globals['_TRIPUPDATE']._serialized_start=642 + _globals['_TRIPUPDATE']._serialized_end=1773 + _globals['_TRIPUPDATE_STOPTIMEEVENT']._serialized_start=933 + _globals['_TRIPUPDATE_STOPTIMEEVENT']._serialized_end=1014 + _globals['_TRIPUPDATE_STOPTIMEUPDATE']._serialized_start=1017 + _globals['_TRIPUPDATE_STOPTIMEUPDATE']._serialized_end=1648 + _globals['_TRIPUPDATE_STOPTIMEUPDATE_STOPTIMEPROPERTIES']._serialized_start=1488 + _globals['_TRIPUPDATE_STOPTIMEUPDATE_STOPTIMEPROPERTIES']._serialized_end=1550 + _globals['_TRIPUPDATE_STOPTIMEUPDATE_SCHEDULERELATIONSHIP']._serialized_start=1552 + _globals['_TRIPUPDATE_STOPTIMEUPDATE_SCHEDULERELATIONSHIP']._serialized_end=1632 + _globals['_TRIPUPDATE_TRIPPROPERTIES']._serialized_start=1650 + _globals['_TRIPUPDATE_TRIPPROPERTIES']._serialized_end=1757 + _globals['_VEHICLEPOSITION']._serialized_start=1776 + _globals['_VEHICLEPOSITION']._serialized_end=3023 + _globals['_VEHICLEPOSITION_CARRIAGEDETAILS']._serialized_start=2370 + _globals['_VEHICLEPOSITION_CARRIAGEDETAILS']._serialized_end=2587 + _globals['_VEHICLEPOSITION_VEHICLESTOPSTATUS']._serialized_start=2589 + _globals['_VEHICLEPOSITION_VEHICLESTOPSTATUS']._serialized_end=2660 + _globals['_VEHICLEPOSITION_CONGESTIONLEVEL']._serialized_start=2662 + _globals['_VEHICLEPOSITION_CONGESTIONLEVEL']._serialized_end=2787 + _globals['_VEHICLEPOSITION_OCCUPANCYSTATUS']._serialized_start=2790 + _globals['_VEHICLEPOSITION_OCCUPANCYSTATUS']._serialized_end=3007 + _globals['_ALERT']._serialized_start=3026 + _globals['_ALERT']._serialized_end=4413 + _globals['_ALERT_CAUSE']._serialized_start=3883 + _globals['_ALERT_CAUSE']._serialized_end=4099 + _globals['_ALERT_EFFECT']._serialized_start=4102 + _globals['_ALERT_EFFECT']._serialized_end=4323 + _globals['_ALERT_SEVERITYLEVEL']._serialized_start=4325 + _globals['_ALERT_SEVERITYLEVEL']._serialized_end=4397 + _globals['_TIMERANGE']._serialized_start=4415 + _globals['_TIMERANGE']._serialized_end=4470 + _globals['_POSITION']._serialized_start=4472 + _globals['_POSITION']._serialized_end=4585 + _globals['_TRIPDESCRIPTOR']._serialized_start=4588 + _globals['_TRIPDESCRIPTOR']._serialized_end=4935 + _globals['_TRIPDESCRIPTOR_SCHEDULERELATIONSHIP']._serialized_start=4790 + _globals['_TRIPDESCRIPTOR_SCHEDULERELATIONSHIP']._serialized_end=4919 + _globals['_VEHICLEDESCRIPTOR']._serialized_start=4938 + _globals['_VEHICLEDESCRIPTOR']._serialized_end=5229 + _globals['_VEHICLEDESCRIPTOR_WHEELCHAIRACCESSIBLE']._serialized_start=5108 + _globals['_VEHICLEDESCRIPTOR_WHEELCHAIRACCESSIBLE']._serialized_end=5213 + _globals['_ENTITYSELECTOR']._serialized_start=5232 + _globals['_ENTITYSELECTOR']._serialized_end=5408 + _globals['_TRANSLATEDSTRING']._serialized_start=5411 + _globals['_TRANSLATEDSTRING']._serialized_end=5577 + _globals['_TRANSLATEDSTRING_TRANSLATION']._serialized_start=5500 + _globals['_TRANSLATEDSTRING_TRANSLATION']._serialized_end=5561 + _globals['_TRANSLATEDIMAGE']._serialized_start=5580 + _globals['_TRANSLATEDIMAGE']._serialized_end=5773 + _globals['_TRANSLATEDIMAGE_LOCALIZEDIMAGE']._serialized_start=5674 + _globals['_TRANSLATEDIMAGE_LOCALIZEDIMAGE']._serialized_end=5757 + _globals['_SHAPE']._serialized_start=5775 + _globals['_SHAPE']._serialized_end=5842 +# @@protoc_insertion_point(module_scope) diff --git a/project/api/views/linea.py b/project/api/views/linea.py index bae44af..cdd1134 100755 --- a/project/api/views/linea.py +++ b/project/api/views/linea.py @@ -6,6 +6,7 @@ from django_filters.rest_framework import DjangoFilterBackend from django.db import connection from .. import models, serializers from django.http import JsonResponse +import logging class LineaViewSet(viewsets.ModelViewSet): queryset = models.Linea.objects.all() @@ -78,6 +79,12 @@ class LineaViewSet(viewsets.ModelViewSet): def buses_proto(self, request, pk=None): pk = request.GET['id_linea'] + linea = models.Linea.objects \ + .filter(id_linea=pk) \ + .first() + + logging.error(linea) + detalle_buses = [] paraderos = models.Paradero.objects \ .filter(vigente=True, lineaparadero__id_linea=pk) \ @@ -89,13 +96,14 @@ class LineaViewSet(viewsets.ModelViewSet): where stop_id = %s" for p in paraderos: - params = [ p['id_paradero'] ] - with connection.cursor() as cursor: - cursor.execute(query, params) - row = cursor.fetchone() + id_paradero = p['id_paradero'] - if row != None: - buses = list(filter(lambda linea: linea['linea'] == pk, row[0])) + with connection.cursor() as cursor: + 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 llegada in bus['Llegadas']: data_bus = { diff --git a/project/api/views/proto.py b/project/api/views/proto.py new file mode 100644 index 0000000..c8985b9 --- /dev/null +++ b/project/api/views/proto.py @@ -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 diff --git a/requirements.txt b/requirements.txt index 8eadb15..087545d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,4 +8,5 @@ python-decouple PyJWT pymongo Pillow -openpyxl \ No newline at end of file +openpyxl +google \ No newline at end of file