@@ -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