diff --git a/agenda/__init__.py b/agenda/__init__.py index 95dccd4..ffabfe2 100644 --- a/agenda/__init__.py +++ b/agenda/__init__.py @@ -325,6 +325,46 @@ def get_birthdays(from_date: date, config: configparser.ConfigParser) -> list[Ev return events +def get_travel(from_date: date, config: configparser.ConfigParser) -> list[Event]: + """Get birthdays from config.""" + filename = config["data"]["travel"] + + events = [] + with open(filename) as f: + items = yaml.safe_load(f) + + for item in items: + if item["type"] == "accommodation": + title = ( + f'{item["location"]} Airbnb' + if item["operator"] == "airbnb" + else item["name"] + ) + from_date = item["from"] + to_date = item["to"] + nights = (to_date - from_date).days + night_str = f"{nights} nights" if nights != 1 else "1 night" + checkin = Event( + date=from_date, + name="accommodation", + title=f"check-in {title} ({night_str})", + ) + checkout = Event( + date=to_date, name="accommodation", title="check-out " + title + ) + events += [checkin, checkout] + continue + if item["type"] == "transport": + event = Event( + date=datetime.fromisoformat(item["depart"]).date(), + name="transport", + title=f'{item["transport_type"]} from {item["from"]} to {item["to"]}', + ) + events.append(event) + + return events + + def waste_collection_events() -> list[Event]: """Waste colllection events.""" postcode = "BS48 3HG" @@ -375,6 +415,7 @@ def get_data(now: datetime) -> dict[str, str | object]: events.append(Event(name=f"xmas_last_{key}", date=value)) events += get_birthdays(today, config) + events += get_travel(today, config) events += get_conferences(today, "conferences.yaml") events += waste_collection_events()