parent
bf5f7f2276
commit
a5eab7473d
|
@ -11,6 +11,7 @@ import dateutil.tz
|
|||
import holidays
|
||||
import lxml
|
||||
import pytz
|
||||
import yaml
|
||||
from dateutil.relativedelta import FR, relativedelta
|
||||
|
||||
from . import (
|
||||
|
@ -147,6 +148,7 @@ async def bristol_waste_collection_events(
|
|||
|
||||
|
||||
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] = {}
|
||||
|
||||
for e in events:
|
||||
|
@ -161,15 +163,16 @@ def combine_holidays(events: list[Event]) -> list[Event]:
|
|||
return list(combined.values())
|
||||
|
||||
|
||||
def xmas_last_posting(config: configparser.ConfigParser) -> list[Event]:
|
||||
"""Last posting days for Christmas."""
|
||||
def read_events_yaml(data_dir: str) -> list[Event]:
|
||||
"""Read eventes from YAML file."""
|
||||
return [
|
||||
Event(
|
||||
name=f"xmas_last_{key}",
|
||||
date=date.fromisoformat(config["xmas_last_posting_dates"][key]),
|
||||
url="https://www.postoffice.co.uk/last-posting-dates",
|
||||
name=item["name"],
|
||||
date=item["end_date" if item["name"] == "travel_insurance" else "date"],
|
||||
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 += conference.get_list(os.path.join(my_data, "conferences.yaml"))
|
||||
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"))
|
||||
|
||||
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"))
|
||||
|
||||
reply["events"] = events
|
||||
|
|
|
@ -66,8 +66,7 @@
|
|||
"next_us_presidential_election": "US pres. election",
|
||||
"xmas_last_second": "Christmas last posting 2nd class",
|
||||
"xmas_last_first": "Christmas last posting 1st class",
|
||||
"xmas_day": "Christmas day",
|
||||
"next_up_series": "Next Up documentary",
|
||||
"up_series": "Up documentary",
|
||||
"waste_schedule": "Waste schedule",
|
||||
"gwr_advance_tickets": "GWR advance tickets",
|
||||
"critical_mass": "Critical Mass",
|
||||
|
|
Loading…
Reference in a new issue