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)
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
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
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)