Events are sorted by date

Closes: #16
This commit is contained in:
Edward Betts 2023-10-05 11:07:01 +01:00
parent 81d7d62620
commit e56cf111e8
3 changed files with 68 additions and 10 deletions

View file

@ -1,5 +1,6 @@
import configparser
import json
import operator
import os
import typing
import warnings
@ -96,12 +97,12 @@ def next_uk_fathers_day(input_date: date) -> date:
return fathers_day
def get_next_timezone_transition(tz_name: str) -> datetime:
def get_next_timezone_transition(tz_name: str) -> date:
"""Datetime of the next time the clocks change."""
tz = pytz.timezone(tz_name)
dt = next(t for t in tz._utc_transition_times if t > now)
return typing.cast(datetime, dt)
return typing.cast(date, dt.date())
def get_next_bank_holiday() -> dict[str, date | str]:
@ -276,9 +277,8 @@ def get_data() -> dict[str, str | object]:
"next_economist": next_economist(today),
"bank_holiday": get_next_bank_holiday(),
"us_holiday": get_us_holiday(),
"next_uk_general_election": next_uk_general_election,
# "next_uk_general_election": next_uk_general_election,
"next_us_presidential_election": next_us_presidential_election,
# "spacex": spacexdata.get_next_spacex_launch(limit=20),
"stock_markets": stock_markets(),
"uk_clock_change": get_next_timezone_transition("Europe/London"),
"us_clock_change": get_next_timezone_transition("America/New_York"),
@ -290,4 +290,24 @@ def get_data() -> dict[str, str | object]:
"rockets": thespacedevs.get_launches(rocket_dir, limit=40),
}
skip = {"now", "gbpusd", "rockets", "stock_markets", "xmas_last_posting_dates"}
events = []
for key, value in reply.items():
if key in skip:
continue
if "holiday" in key:
assert isinstance(value, dict)
event = value
event["name"] = key
else:
event = {"name": key, "date": value}
events.append(event)
for key, value in xmas_last_posting_dates.items():
events.append({"name": f"xmas_last_{key}", "date": value})
events.sort(key=operator.itemgetter("date"))
reply["events"] = events
return reply