@@ -168,6 +168,7 @@ def _store_substitutions(self, name, url, span):
168
168
169
169
header_substitutions = ["ODSOTNI UČITELJ/ICA" , "URA" , "RAZRED" , "UČILNICA" , "NADOMEŠČA" , "PREDMET" , "OPOMBA" ]
170
170
header_lesson_change = ["RAZRED" , "URA" , "UČITELJ/ICA" , "PREDMETA" , "UČILNICA" , "OPOMBA" ]
171
+ header_subject_change = ["RAZRED" , "URA" , "UČITELJ" , "PREDMET" , "UČILNICA" , "OPOMBA" ]
171
172
header_classroom_change = ["RAZRED" , "URA" , "UČITELJ/ICA" , "PREDMET" , "IZ UČILNICE" , "V UČILNICO" , "OPOMBA" ]
172
173
header_more_teachers = ["URA" , "UČITELJ" , "RAZRED" , "UČILNICA" , "OPOMBA" ]
173
174
header_reservations = ["URA" , "UČILNICA" , "REZERVIRAL/A" , "OPOMBA" ]
@@ -189,6 +190,9 @@ def _store_substitutions(self, name, url, span):
189
190
elif row == header_lesson_change :
190
191
parser_type = "lesson-change"
191
192
continue
193
+ elif row == header_subject_change :
194
+ parser_type = "subject-change"
195
+ continue
192
196
elif row == header_classroom_change :
193
197
parser_type = "classroom-change"
194
198
continue
@@ -266,6 +270,37 @@ def _store_substitutions(self, name, url, span):
266
270
)
267
271
# fmt: on
268
272
273
+ elif parser_type == "subject-change" :
274
+ time = row [1 ][:- 1 ] if row [1 ] != "PU" else 0
275
+ subject = self ._normalize_other_names (row [3 ].split (" → " )[1 ])
276
+
277
+ original_teacher = self ._normalize_teacher_name (row [2 ])
278
+ original_classroom = self ._normalize_other_names (row [4 ])
279
+
280
+ # Handle multiple classes
281
+ classes = row [0 ].replace (". " , "" ).split (" - " )
282
+ classes = classes [:- 1 ] if len (classes ) > 1 else classes
283
+
284
+ teacher = original_teacher
285
+ classroom = original_classroom
286
+
287
+ # fmt: off
288
+ for class_ in classes :
289
+ substitutions .append (
290
+ {
291
+ "date" : date ,
292
+ "day" : day ,
293
+ "time" : time ,
294
+ "subject" : subject ,
295
+ "original_teacher_id" : get_or_create (self .session , model = Teacher , name = original_teacher )[0 ].id if original_teacher else None ,
296
+ "original_classroom_id" : get_or_create (self .session , model = Classroom , name = original_classroom )[0 ].id if original_classroom else None ,
297
+ "class_id" : get_or_create (self .session , model = Class , name = class_ )[0 ].id ,
298
+ "teacher_id" : get_or_create (self .session , model = Teacher , name = teacher )[0 ].id if teacher else None ,
299
+ "classroom_id" : get_or_create (self .session , model = Classroom , name = classroom )[0 ].id if classroom else None ,
300
+ }
301
+ )
302
+ # fmt: on
303
+
269
304
elif parser_type == "classroom-change" :
270
305
time = row [1 ][:- 1 ] if row [1 ] != "PU" else 0
271
306
subject = self ._normalize_other_names (row [3 ])
0 commit comments