Exemplo n.º 1
0
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
Exemplo n.º 3
0
    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)
Exemplo n.º 4
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()),
]