Example #1
0
def event_stream():
    #TODO: Get these inputs from client:
    city = "IUB"
    #Buses whose coordinates 
    listColloquialBusNumbers = ['3 College Mall / Bradford Place','6 Campus Shuttle - Fri','6 Limited', '9 IU Campus / College Mall / Campus Corner', 'A Route', 'B Route', 'C Route', 'D Route']
    #target location coordinates
    targetCoordinates = (39.17159402400064, -86.51633620262146) #10th St Bloomington, IN 47408 
    alertDistance = 0.3 #miles
    
    #Create constans object to fetch all constant values
    constantsObject = Constants()
    constantsObject.load_constants("constants.json")
    #Create bus operations object
    busOperationsObject = BusOperations(constantsObject, city)
    #Create route object
    routeObject = Route(constantsObject, city)
    #Create a map of actual to colloquial bus numbers
    map_actual_bus_numbers_to_colloquial_bus_numbers = routeObject.get_colloquial_bus_numbers_from_actual_bus_numbers()
    #Make a list of bus objects
    listOfActualBusNumbers = routeObject.get_actual_bus_numbers(listColloquialBusNumbers)
    #Create bus objects
    listOfBusObjects = [] #Stores list of all bus objects
    for actualNumber in listOfActualBusNumbers:
        busObject = Bus(constantsObject)
        busObject.set_actual_number(actualNumber)
        listOfBusObjects.append(busObject)
    flag = True
    while flag:
        #gevent.sleep(2) #sleep for 2 second before updating status of each bus to avoid overloading servers with requests
        listOfBusObjects = busOperationsObject.updateBusStatus(listOfBusObjects)
        #check which buses are approaching, then track them or show them or whatever
        for bus in listOfBusObjects:
            status = bus.getBusMovementAgainstTarget(targetCoordinates)
            if status == constantsObject.APPROACHING:
                status = "APPROACHING"
            elif status == constantsObject.LEAVING:
                status = "LEAVING"
            else:
                status = "STOPPED"
            data = map_actual_bus_numbers_to_colloquial_bus_numbers[bus.get_actual_number()]," :",status, " is at distance: ",str(bus.getBusDistanceFromTarget(targetCoordinates))," miles"
            printableData = " ".join(data)
            gevent.sleep(2) #sleep for 2 second before updating status of each bus to avoid overloading servers with requests
            if status == "APPROACHING" and  bus.getBusDistanceFromTarget(targetCoordinates) <= alertDistance:
                printableData = "ALERT! bus: "+str(map_actual_bus_numbers_to_colloquial_bus_numbers[bus.get_actual_number()])+" is near"
                #print type(printableData)
                #print printableData
            yield 'data: %s\n\n' % printableData
Example #2
0
    def pollDistance(self):
        #get the actual bus objects from the user specified name list
        pprint(self.busList)
        print '-'*20
        listOfActualBusNumbers = self.routeObject.get_actual_bus_numbers(self.busList)
        print '-'*20
        pprint(listOfActualBusNumbers)
        #Create bus objects
        listOfBusObjects = [] #Stores list of all bus objects
        for actualNumber in listOfActualBusNumbers:
            busObject = Bus(self.constantsObject)
            busObject.set_actual_number(actualNumber)
            listOfBusObjects.append(busObject)
        #Create a map of actual to colloquial bus numbers
        map_actual_bus_numbers_to_colloquial_bus_numbers = self.routeObject.get_colloquial_bus_numbers_from_actual_bus_numbers()

        while True:
            time.sleep(2) #sleep for 2 second before updating status of each bus
            listOfBusObjects = self.busOperationsObject.updateBusStatus(listOfBusObjects)
            #check which buses are approaching, then track them or show them or whatever
            for bus in listOfBusObjects:
                status = bus.getBusMovementAgainstTarget(self.targetCoordinates)
                if status == self.constantsObject.APPROACHING:
                    status = "APPROACHING"
                elif status == self.constantsObject.LEAVING:
                    status = "LEAVING"
                else:
                    status = "STOPPED"
                currentDist = bus.getBusDistanceFromTarget(self.targetCoordinates)
                if currentDist <= 0.4:
                    #send notification & remove it from the list
                    #TODO sending notification to the client
                    listOfBusObjects.remove(bus)
                    yield bus.get_colloquial_number()
                print map_actual_bus_numbers_to_colloquial_bus_numbers[bus.get_actual_number()]," :",status, \
                " is at distance: ",bus.getBusDistanceFromTarget(self.targetCoordinates)," miles"
Example #3
0
 #Create a map of actual to colloquial bus numbers
 map_actual_bus_numbers_to_colloquial_bus_numbers = routeObject.get_colloquial_bus_numbers_from_actual_bus_numbers()
 print "-"*50
 print map_actual_bus_numbers_to_colloquial_bus_numbers 
 print '-'*50
 
 #Make a list of bus objects
 listColloquialBusNumbers = ['3 College Mall / Bradford Place','6 Limited','9 Limited']
 listOfActualBusNumbers = routeObject.get_actual_bus_numbers(listColloquialBusNumbers)
 print "Colloquial no:",listColloquialBusNumbers
 print "Actual nos:",listOfActualBusNumbers
 #Create bus objects
 listOfBusObjects = [] #Stores list of all bus objects
 for actualNumber in listOfActualBusNumbers:
     busObject = Bus(constantsObject)
     busObject.set_actual_number(actualNumber)
     listOfBusObjects.append(busObject)
 
 while True:
     time.sleep(2) #sleep for 2 second before updating status of each bus
     listOfBusObjects = busOperationsObject.updateBusStatus(listOfBusObjects)
     #check which buses are approaching, then track them or show them or whatever
     for bus in listOfBusObjects:
         status = bus.getBusMovementAgainstTarget(targetCoordinates)
         if status == constantsObject.APPROACHING:
             status = "APPROACHING"
         elif status == constantsObject.LEAVING:
             status = "LEAVING"
         else:
             status = "STOPPED"
         print map_actual_bus_numbers_to_colloquial_bus_numbers[bus.get_actual_number()]," :",status, " is at distance: ",bus.getBusDistanceFromTarget(targetCoordinates)," miles"