Provide UTC/local toggle. Closes #32

This commit is contained in:
Ian Renton
2025-10-08 17:16:56 +01:00
parent 62c187178b
commit 1843286f92
6 changed files with 109 additions and 69 deletions

View File

@@ -138,35 +138,35 @@ class WebServer:
match k:
case "since":
since = datetime.fromtimestamp(int(query.get(k)), pytz.UTC)
spots = [s for s in spots if s.time > since]
spots = [s for s in spots if s.time and s.time > since]
case "max_age":
max_age = int(query.get(k))
since = datetime.now(pytz.UTC) - timedelta(seconds=max_age)
spots = [s for s in spots if s.time > since]
spots = [s for s in spots if s.time and s.time > since]
case "received_since":
since = datetime.fromtimestamp(int(query.get(k)), pytz.UTC)
spots = [s for s in spots if s.received_time > since]
spots = [s for s in spots if s.received_time and s.received_time > since]
case "source":
sources = query.get(k).split(",")
spots = [s for s in spots if s.source in sources]
spots = [s for s in spots if s.source and s.source in sources]
case "sig":
sigs = query.get(k).split(",")
spots = [s for s in spots if s.sig in sigs]
spots = [s for s in spots if s.sig and s.sig in sigs]
case "band":
bands = query.get(k).split(",")
spots = [s for s in spots if s.band in bands]
spots = [s for s in spots if s.band and s.band in bands]
case "mode":
modes = query.get(k).split(",")
spots = [s for s in spots if s.mode in modes]
case "mode_type":
mode_families = query.get(k).split(",")
spots = [s for s in spots if s.mode_type in mode_families]
spots = [s for s in spots if s.mode_type and s.mode_type in mode_families]
case "dx_continent":
dxconts = query.get(k).split(",")
spots = [s for s in spots if s.dx_continent in dxconts]
spots = [s for s in spots if s.dx_continent and s.dx_continent in dxconts]
case "de_continent":
deconts = query.get(k).split(",")
spots = [s for s in spots if s.de_continent in deconts]
spots = [s for s in spots if s.de_continent and s.de_continent in deconts]
# If we have a "limit" parameter, we apply that last, regardless of where it appeared in the list of keys.
if "limit" in query.keys():
spots = spots[:int(query.get("limit"))]
@@ -195,7 +195,7 @@ class WebServer:
match k:
case "received_since":
since = datetime.fromtimestamp(int(query.get(k)), pytz.UTC)
alerts = [a for a in alerts if a.received_time > since]
alerts = [a for a in alerts if a.received_time and a.received_time > since]
case "max_duration":
max_duration = int(query.get(k))
# Check the duration if end_time is provided. If end_time is not provided, assume the activation is
@@ -204,13 +204,13 @@ class WebServer:
not a.end_time]
case "source":
sources = query.get(k).split(",")
alerts = [a for a in alerts if a.source in sources]
alerts = [a for a in alerts if a.source and a.source in sources]
case "sig":
sigs = query.get(k).split(",")
alerts = [a for a in alerts if a.sig in sigs]
alerts = [a for a in alerts if a.sig and a.sig in sigs]
case "dx_continent":
dxconts = query.get(k).split(",")
alerts = [a for a in alerts if a.dx_continent in dxconts]
alerts = [a for a in alerts if a.dx_continent and a.dx_continent in dxconts]
# If we have a "limit" parameter, we apply that last, regardless of where it appeared in the list of keys.
if "limit" in query.keys():
alerts = alerts[:int(query.get("limit"))]