Compare commits
2 commits
0f3b96baca
...
46b3e6ede4
Author | SHA1 | Date | |
---|---|---|---|
Edward Betts | 46b3e6ede4 | ||
Edward Betts | 9ca1a7358f |
|
@ -1,28 +1,57 @@
|
|||
"""Conferences."""
|
||||
|
||||
import dataclasses
|
||||
import decimal
|
||||
from datetime import date, datetime
|
||||
|
||||
import yaml
|
||||
|
||||
from .types import Event
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class Conference:
|
||||
"""Conference."""
|
||||
|
||||
name: str
|
||||
topic: str
|
||||
location: str
|
||||
start: date | datetime
|
||||
end: date | datetime
|
||||
venue: str | None = None
|
||||
address: str | None = None
|
||||
url: str | None = None
|
||||
accommodation_booked: bool = False
|
||||
transport_booked: bool = False
|
||||
going: bool = False
|
||||
registered: bool = False
|
||||
speaking: bool = False
|
||||
online: bool = False
|
||||
price: decimal.Decimal | None = None
|
||||
currency: str | None = None
|
||||
|
||||
@property
|
||||
def display_name(self) -> str:
|
||||
"""Add location if not already in conference name."""
|
||||
return (
|
||||
self.name
|
||||
if self.location in self.name
|
||||
else f"{self.name} ({self.location})"
|
||||
)
|
||||
|
||||
|
||||
def get_list(filepath: str) -> list[Event]:
|
||||
"""Read conferences from a YAML file and return a list of Event objects."""
|
||||
with open(filepath, "r") as f:
|
||||
data = yaml.safe_load(f)
|
||||
|
||||
events = []
|
||||
for conf in data.get("conferences", []):
|
||||
start_date = conf["start"]
|
||||
end_date = conf["end"]
|
||||
|
||||
# Skip the conference if it is before the input date.
|
||||
event = Event(
|
||||
return [
|
||||
Event(
|
||||
name="conference",
|
||||
date=start_date,
|
||||
end_date=end_date,
|
||||
title=f'🎤 {conf["name"]} ({conf["location"]})',
|
||||
url=conf.get("url"),
|
||||
date=conf.start,
|
||||
end_date=conf.end,
|
||||
title=f"🎤 {conf.display_name}",
|
||||
url=conf.url,
|
||||
)
|
||||
events.append(event)
|
||||
|
||||
return events
|
||||
for conf in (
|
||||
Conference(**conf)
|
||||
for conf in yaml.safe_load(open(filepath, "r"))["conferences"]
|
||||
)
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue