Move Participant/Group to pydantic and add a saveable/editable Plan model
Participant and Group are now pydantic BaseModels. Group.hosts can form cycles between groups, so it's kept as a private, non-persisted live list (set via set_hosts()/add_host()) backed by a serializable host_uuids field, re-linked via resolve_hosts() after a reload. A new Plan model (src/tatami/plan.py) bundles groups, the after-party group, and the event config (course_times, organizer_contacts, info_text, spreadsheet_id) and supports save()/load() to/from JSON. tatami_masterplan's __main__ now saves to masterplan.json (PLAN_FILE env var to override) on first run and loads it on later runs instead of recomputing, so the plan can be hand-edited (move a member between groups, change a course, fill in spreadsheet_id) and picked up on rerun without hitting the Routes API again. spreadsheet_id moves out of .env (GOOGLE_SHEETS_SPREADSHEET_ID) onto the plan itself, since it's part of the plan rather than a secret.
This commit is contained in:
@@ -9,6 +9,7 @@ dependencies = [
|
||||
"numpy>=2.2.4",
|
||||
"pandas>=2.2.3",
|
||||
"pandas-stubs>=2.2.3.250308",
|
||||
"pydantic>=2.13.4",
|
||||
"python-dotenv>=1.2.2",
|
||||
"requests>=2.32.3",
|
||||
"tqdm>=4.67.1",
|
||||
|
||||
Reference in New Issue
Block a user