From 116fd4c63a778e81c77818114968598e8769cf8d Mon Sep 17 00:00:00 2001 From: Mike Lang Date: Thu, 14 Nov 2024 14:41:36 +1100 Subject: [PATCH] fall back to raw if no results --- thrimshim/thrimshim/main.py | 42 +++++++------------------------------ 1 file changed, 7 insertions(+), 35 deletions(-) diff --git a/thrimshim/thrimshim/main.py b/thrimshim/thrimshim/main.py index 865fc5e..3f18444 100644 --- a/thrimshim/thrimshim/main.py +++ b/thrimshim/thrimshim/main.py @@ -791,45 +791,17 @@ def get_odometer(channel): processed: The most recent value, excluding outliers and detected mistakes predicted: processed, but extrapolated to the current time. """ - type = flask.request.args.get("type") + type = flask.request.args.get("type", "post_processed") conn = app.db_manager.get_conn() values = bus_stats.get_latest(channel, conn) if type not in values: return f"Unknown type: {type!r}", 400 - return to_json(values[type]) - - -def time_is_pm(conn, timestamp, clock, timeofday): - if timeofday == "day": - # before 7:30 is pm - return clock < 7*60+30 - if timeofday == "dusk": - return True - if timeofday == "night": - # after 8:00 is pm - return clock >= 8*60 - # dawn - # before 6:40 is pm - if clock < 6*60+40: - return True - # after 7:00 is am - if clock >= 7*60: - return False - # 6:40 to 7:00 is ambiguous, let's look backwards from our timestamp to see how long ago night was - results = database.query(conn, """ - SELECT timestamp - FROM bus_data - WHERE timeofday = 'night' - AND timestamp < %s - ORDER BY timestamp DESC LIMIT 1 - """, timestamp) - result = results.fetchone() - if result is None: - # Can't determine night time, assume it as a long time ago - return True - since_night = timestamp - result.timestamp - # Pick PM if night was more than 4h ago. - return since_night.total_seconds() > 4*60*60 + result = values[type] + # Fall back to raw for anything we failed to determine + for key in result: + if result[key] is None or math.isnan(result[key]): + result[key] = values["raw"][key] + return to_json(result) @argh.arg('--host', help='Address or socket server will listen to. Default is 0.0.0.0 (everything on the local machine).')