def nearbyBuses(request, pUserId, pBusStop): """ return all information about bus stop: events and buses """ logger = logging.getLogger(__name__) timeNow = timezone.now() theBusStop = BusStop.objects.get(code=pBusStop) """ This is temporal, it has to be deleted in the future """ if pUserId != 'null': # Register user request NearByBusesLog.objects.create( userId=pUserId, busStop=theBusStop, timeStamp=timeNow) else: logger.error('nearbybuses: null user') answer = {} """ BUS STOP EVENTS """ getEventsBusStop = EventsByBusStop() busStopEvent = getEventsBusStop.getEventsForBusStop(theBusStop, timeNow) answer["eventos"] = busStopEvent """ USER BUSES """ userBuses = getUserBuses(theBusStop, pUserId) """ DTPM BUSES """ # DTPM source url = "http://54.94.231.101/dtpm/busStopInfo/" url = "{}{}/{}".format(url, settings.SECRET_KEY, pBusStop) response = requests.get(url=url) authBuses = [] if(response.text != ""): data = json.loads(response.text) if 'id' in data: authBuses = getAuthorityBuses(data) if data['error'] is not None: answer['DTPMError'] = data['error'] else: answer['DTPMError'] = "" """ MERGE USER BUSES WITH DTPM BUSES """ answer['servicios'] = mergeBuses(userBuses, authBuses) return JsonResponse(answer, safe=False)
def getBusStopsForService(self, pBusService): """this method look for all the bus stops where the service stops.""" busStops = [] for sbs in ServicesByBusStop.objects.filter(service=pBusService): data = {} busStop = sbs.busStop data['codigo'] = busStop.code data['nombre'] = busStop.name data['latitud'] = busStop.latitud data['longitud'] = busStop.longitud getEventsByBusStop = EventsByBusStop() data['eventos'] = getEventsByBusStop.getEventsForBusStop( busStop, timezone.now()) busStops.append(data) return busStops
def test_EventsByBusStopv2(self): '''This method test two thing, the posibility to report an event and asking the events for the specific busStop''' busStopCode = 'PA459' eventCode = 'evn00001' # submitting some events to the server request = self.factory.get('/android/reportEventBusStop/v2/') request.user = AnonymousUser() request0 = self.factory.get('/android/requestEventsForBusStop/v2/') request0.user = AnonymousUser() reponseView = RegisterEventBusStop() # make a report reponseView.get( request, self.userId, busStopCode, eventCode, 'confirm') # report one event, and confirm it response0View = EventsByBusStop() response0 = response0View.get(request0, busStopCode) response0 = json.loads(response0.content) self.assertEqual(response0['codeBusStop'], busStopCode) self.assertEqual(response0['events'][0]['eventDecline'], 0) self.assertEqual(response0['events'][0]['eventConfirm'], 1) self.assertEqual(response0['events'][0]['eventcode'], eventCode) # do event +1 to the event reponseView.get( request, self.userId, busStopCode, eventCode, 'confirm') response0 = response0View.get(request0, busStopCode) response0 = json.loads(response0.content) self.assertEqual(response0['codeBusStop'], busStopCode) self.assertEqual(response0['events'][0]['eventDecline'], 0) self.assertEqual(response0['events'][0]['eventConfirm'], 2) self.assertEqual(response0['events'][0]['eventcode'], eventCode) # do event -1 to the event reponseView.get( request, self.userId, busStopCode, eventCode, 'decline') response0 = response0View.get(request0, busStopCode) response0 = json.loads(response0.content) self.assertEqual(response0['codeBusStop'], busStopCode) self.assertEqual(response0['events'][0]['eventDecline'], 1) self.assertEqual(response0['events'][0]['eventConfirm'], 2) self.assertEqual(response0['events'][0]['eventcode'], eventCode) # change manualy the timeStamp to simulate an event that has expired busStop = BusStop.objects.get(code=busStopCode) event = Event.objects.get(id=eventCode) anEvent = EventForBusStop.objects.get(busStop=busStop, event=event) anEvent.timeStamp = anEvent.timeCreation - \ timezone.timedelta(minutes=event.lifespam) anEvent.save() # ask for ecents and the answere should be none response0 = response0View.get(request0, busStopCode) response0 = json.loads(response0.content) self.assertEqual(len(response0['events']), 0)
r'^reportEventBusStop/(?P<pUserId>[0-9a-z-]+)/(?P<pBusStopCode>[\w,0-9]*)/(?P<pEventID>.*)/(?P<pLatitud>[\-+]?[0-9]*\.?[0-9]*)/(?P<pLongitud>[\-+]?[0-9]*\.?[0-9]*)/(?P<pConfirmDecline>.*)$', RegisterEventBusStop.as_view()), url( r'^reportEventBusStop/(?P<pUserId>[0-9a-z-]+)/(?P<pBusStopCode>[\w,0-9]*)/(?P<pEventID>.*)/(?P<pConfirmDecline>.*)$', RegisterEventBusStop.as_view()), # List of events that depend of parameter pWhich={stopstop,stopbus, busbus} url(r'^requestEventsToNotified/(?P<pWhich>[\w,0-9]*)$', RequestEventsToNotified.as_view()), # List of bus events url( r'^requestEventsForBus/(?P<pRegistrationPlate>[\w,0-9,-]{6,8})/(?P<pBusService>[\w,0-9]*)$', EventsByBus.as_view()), url(r'^requestEventsForBus/v2/(?P<pUuid>[0-9a-z-]+)$', EventsByBusV2.as_view()), # List of bus stop events url( r'^requestEventsForBusStop/(?P<pBusStopCode>[\w,0-9]*)$', EventsByBusStop.as_view()), # List of bus stop of a service url( r'^requestBusStopsForService/(?P<pBusService>[\w,0-9]*)$', BusStopsByService.as_view()), url( r'^requestRouteForService/(?P<pBusService>[\w,0-9]*)/(?P<pLat1>[\-+]?[0-9]*\.?[0-9]*)/(?P<pLon1>[\-+]?[0-9]*\.?[0-9]*)/(?P<pLat2>[\-+]?[0-9]*\.?[0-9]*)/(?P<pLon2>[\-+]?[0-9]*\.?[0-9]*)$', ServiceRoute.as_view()), # setDirection receives parameter by POST url(r'^setDirection$', SetDirection.as_view()), url(r'^getUUID/(?P<pLicensePlate>[\w,0-9,-]{6,8})$', RequestUUID.as_view()), ]