Skip to content

Commit 11d6cbd

Browse files
committed
Deserialization: Schedule slots
1 parent 0232de1 commit 11d6cbd

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

src/models/pretalx.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,9 @@ def process_values(cls, values) -> dict:
9898
values["speakers"] = sorted([s["code"] for s in values["speakers"]])
9999

100100
# Set slot information
101-
if values.get("slot"):
102-
slot = PretalxSlot.model_validate(values["slot"])
101+
if values.get("slots"):
102+
slot = PretalxSlot.model_validate(values["slots"][0])
103+
values["slot"] = slot
103104
values["room"] = slot.room
104105
values["start"] = slot.start
105106
values["end"] = slot.end
@@ -146,3 +147,28 @@ class PretalxSchedule(BaseModel):
146147

147148
slots: list[PretalxSubmission]
148149
breaks: list[PretalxScheduleBreak]
150+
151+
@model_validator(mode="before")
152+
@classmethod
153+
def process_values(cls, values) -> dict:
154+
submission_slots = []
155+
break_slots = []
156+
for slot_dict in values["slots"]:
157+
# extract nested slot fields into slot
158+
slot_object = PretalxSlot.model_validate(slot_dict)
159+
slot_dict["slot"] = slot_object
160+
slot_dict["room"] = slot_object.room
161+
slot_dict["start"] = slot_object.start
162+
slot_dict["end"] = slot_object.end
163+
164+
if slot_dict.get("submission") is None:
165+
break_slots.append(slot_dict)
166+
else:
167+
# merge submission fields into slot
168+
slot_dict.update(slot_dict.get("submission", {}))
169+
170+
submission_slots.append(slot_dict)
171+
172+
values["slots"] = submission_slots
173+
values["breaks"] = break_slots
174+
return values

0 commit comments

Comments
 (0)