parent
bf5f7f2276
commit
a5eab7473d
|
@ -11,6 +11,7 @@ import dateutil.tz
|
||||||
import holidays
|
import holidays
|
||||||
import lxml
|
import lxml
|
||||||
import pytz
|
import pytz
|
||||||
|
import yaml
|
||||||
from dateutil.relativedelta import FR, relativedelta
|
from dateutil.relativedelta import FR, relativedelta
|
||||||
|
|
||||||
from . import (
|
from . import (
|
||||||
|
@ -147,6 +148,7 @@ async def bristol_waste_collection_events(
|
||||||
|
|
||||||
|
|
||||||
def combine_holidays(events: list[Event]) -> list[Event]:
|
def combine_holidays(events: list[Event]) -> list[Event]:
|
||||||
|
"""Combine UK and US holidays with the same date and title."""
|
||||||
combined: dict[tuple[date, str], Event] = {}
|
combined: dict[tuple[date, str], Event] = {}
|
||||||
|
|
||||||
for e in events:
|
for e in events:
|
||||||
|
@ -161,15 +163,16 @@ def combine_holidays(events: list[Event]) -> list[Event]:
|
||||||
return list(combined.values())
|
return list(combined.values())
|
||||||
|
|
||||||
|
|
||||||
def xmas_last_posting(config: configparser.ConfigParser) -> list[Event]:
|
def read_events_yaml(data_dir: str) -> list[Event]:
|
||||||
"""Last posting days for Christmas."""
|
"""Read eventes from YAML file."""
|
||||||
return [
|
return [
|
||||||
Event(
|
Event(
|
||||||
name=f"xmas_last_{key}",
|
name=item["name"],
|
||||||
date=date.fromisoformat(config["xmas_last_posting_dates"][key]),
|
date=item["end_date" if item["name"] == "travel_insurance" else "date"],
|
||||||
url="https://www.postoffice.co.uk/last-posting-dates",
|
title=item.get("title"),
|
||||||
|
url=item.get("url"),
|
||||||
)
|
)
|
||||||
for key in ("first", "second")
|
for item in yaml.safe_load(open(os.path.join(data_dir, "events.yaml")))
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -259,17 +262,10 @@ async def get_data(now: datetime) -> typing.Mapping[str, str | object]:
|
||||||
events += travel.all_events(config["data"]["personal-data"])
|
events += travel.all_events(config["data"]["personal-data"])
|
||||||
events += conference.get_list(os.path.join(my_data, "conferences.yaml"))
|
events += conference.get_list(os.path.join(my_data, "conferences.yaml"))
|
||||||
events += backwell_bins + bristol_bins
|
events += backwell_bins + bristol_bins
|
||||||
events += xmas_last_posting(config)
|
events += read_events_yaml(my_data)
|
||||||
|
|
||||||
events += subscription.get_events(os.path.join(my_data, "subscriptions.yaml"))
|
events += subscription.get_events(os.path.join(my_data, "subscriptions.yaml"))
|
||||||
|
|
||||||
next_up_series = Event(
|
|
||||||
date=date(2026, 6, 1),
|
|
||||||
title="70 Up",
|
|
||||||
name="next_up_series",
|
|
||||||
)
|
|
||||||
events.append(next_up_series)
|
|
||||||
|
|
||||||
events.sort(key=operator.attrgetter("as_datetime"))
|
events.sort(key=operator.attrgetter("as_datetime"))
|
||||||
|
|
||||||
reply["events"] = events
|
reply["events"] = events
|
||||||
|
|
|
@ -66,8 +66,7 @@
|
||||||
"next_us_presidential_election": "US pres. election",
|
"next_us_presidential_election": "US pres. election",
|
||||||
"xmas_last_second": "Christmas last posting 2nd class",
|
"xmas_last_second": "Christmas last posting 2nd class",
|
||||||
"xmas_last_first": "Christmas last posting 1st class",
|
"xmas_last_first": "Christmas last posting 1st class",
|
||||||
"xmas_day": "Christmas day",
|
"up_series": "Up documentary",
|
||||||
"next_up_series": "Next Up documentary",
|
|
||||||
"waste_schedule": "Waste schedule",
|
"waste_schedule": "Waste schedule",
|
||||||
"gwr_advance_tickets": "GWR advance tickets",
|
"gwr_advance_tickets": "GWR advance tickets",
|
||||||
"critical_mass": "Critical Mass",
|
"critical_mass": "Critical Mass",
|
||||||
|
|
Loading…
Reference in a new issue