def test_departures(self):
		route = Route(self.token, "SF-MUNI", "45-Union Stockton", "45", True)
		stop = Stop(self.token, "Union St and Buchanan St", "17056")
		departures = stop.next_departures(route.code)
		self.assertIsNotNone(departures)
		self.assertEqual(departures.route, route.code)
		self.assertTrue(len(departures.times) > 0)
		for time in departures.times:
			self.assertIsNotNone(time)

		outbound_departures = stop.next_departures(route.code, direction=route.OUTBOUND)
		self.assertIsNotNone(outbound_departures)
		self.assertEqual(outbound_departures.route, route.code)
		self.assertTrue(len(outbound_departures.times) > 0)
		for time in outbound_departures.times:
			self.assertIsNotNone(time)
Exemple #2
0
def daemon_loop(config, muni_token, bridge):
    triggered_rules = []

    for stop_id, stop_config in config['stops'].iteritems():
        stop = Stop(muni_token, "", stop_id)

        for route_id, route_config in stop_config.iteritems():
            departure = stop.next_departures(route_id, route_config['direction'])
            print "%s - %s" % (route_id, departure.times)
            departure_rules_triggered = process_departures(departure, bridge, route_config)
            triggered_rules.extend(departure_rules_triggered)

    desired_light_states = colate_lights(triggered_rules)

    trigger_lights(bridge, desired_light_states)

    triggered_lights = set()
    for rule in triggered_rules:
        triggered_lights.update(rule['lights'].keys())

    for light_id in natural_light_state.iterkeys():
        if light_id not in triggered_lights:
            reset_light(bridge, light_id)

    return False
Exemple #3
0
def daemon_loop(config, muni_token, bridge):
    triggered_rules = []

    for stop_id, stop_config in config['stops'].iteritems():
        stop = Stop(muni_token, "", stop_id)

        for route_id, route_config in stop_config.iteritems():
            departure = stop.next_departures(route_id,
                                             route_config['direction'])
            print "%s - %s" % (route_id, departure.times)
            departure_rules_triggered = process_departures(
                departure, bridge, route_config)
            triggered_rules.extend(departure_rules_triggered)

    desired_light_states = colate_lights(triggered_rules)

    trigger_lights(bridge, desired_light_states)

    triggered_lights = set()
    for rule in triggered_rules:
        triggered_lights.update(rule['lights'].keys())

    for light_id in natural_light_state.iterkeys():
        if light_id not in triggered_lights:
            reset_light(bridge, light_id)

    return False
Exemple #4
0
def getBusTimes():
    """
    Returns the incoming times of the stops configured for the user. If not configured,
    it prompts the user to add a stop.
    """
    card_title = render_template('card_title')

    response = dynamodb_table.query(
        KeyConditionExpression=Key('userId').eq(session.user.userId))
    if isResponseEmpty(response):
        return askToAddAStop()
    else:
        departures = []

        for key in response["Items"][0]['stops']:
            s = response["Items"][0]['stops'][key]
            stop = Stop(TOKEN, s["name"], s["code"])
            if "buses" in s:
                for r in s["buses"]:
                    try:
                        d = stop.next_departures(r)
                        readable_departure_times = getSentence(d.times)
                        departures.append(
                            dict(bus=d.route,
                                 departures=readable_departure_times))
                    except Exception:
                        log.exception("Failed to get departures for %s", r)

        if len(departures) == 0:
            return statement(render_template("get_departures_failed"))
        else:
            responseStatement = render_template("get_departures_success",
                                                departures=departures)

            return statement(responseStatement).simple_card(
                card_title, responseStatement)