Add conference series pages
This commit is contained in:
parent
098c7e4447
commit
57b2db205d
9 changed files with 367 additions and 3 deletions
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import dataclasses
|
||||
import decimal
|
||||
import os
|
||||
import typing
|
||||
from datetime import date, datetime
|
||||
|
||||
|
|
@ -16,6 +17,18 @@ DATE_STATUSES = {"exact", "approximate", "tentative"}
|
|||
DATED_STATUSES = {"exact", "tentative"}
|
||||
|
||||
|
||||
class ConferenceSeries(typing.TypedDict, total=False):
|
||||
"""Conference series metadata."""
|
||||
|
||||
name: str
|
||||
topic: str
|
||||
url: str
|
||||
notes: str
|
||||
cadence: str
|
||||
usual_location: str
|
||||
country: str
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class Conference:
|
||||
"""Conference."""
|
||||
|
|
@ -23,6 +36,7 @@ class Conference:
|
|||
name: str
|
||||
topic: str
|
||||
location: str
|
||||
series: str | None = None
|
||||
start: date | datetime | None = None
|
||||
end: date | datetime | None = None
|
||||
trip: date | None = None
|
||||
|
|
@ -166,6 +180,20 @@ def validate_conference_date_fields(item: StrDict) -> StrDict:
|
|||
return fields
|
||||
|
||||
|
||||
def load_series(data_dir: str) -> dict[str, ConferenceSeries]:
|
||||
"""Load conference series metadata."""
|
||||
filepath = os.path.join(data_dir, "conference_series.yaml")
|
||||
if not os.path.exists(filepath):
|
||||
return {}
|
||||
|
||||
loaded = yaml.safe_load(open(filepath, "r"))
|
||||
if loaded is None:
|
||||
return {}
|
||||
if not isinstance(loaded, dict):
|
||||
raise ValueError("conference_series.yaml must be a mapping")
|
||||
return typing.cast(dict[str, ConferenceSeries], loaded)
|
||||
|
||||
|
||||
def get_list(filepath: str) -> list[Event]:
|
||||
"""Read conferences from a YAML file and return a list of Event objects."""
|
||||
events: list[Event] = []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue