Skip to content

Commit 6bd8830

Browse files
authored
Merge pull request #29 from filips123/add-subject-change-category
2 parents 9db2898 + ba81aca commit 6bd8830

File tree

4 files changed

+211
-173
lines changed

4 files changed

+211
-173
lines changed

API/config.yaml.sample

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
sources:
22
timetable:
3-
url: http://old.gimvic.org/urnik/data.js
3+
url: http://projekti.gimvic.org/urnik/data.js
44
eclassroom:
55
url: https://ucilnica.gimvic.org/webservice/rest/server.php
66
token: YOUR-TOKEN-HERE

API/gimvicurnik/updaters/eclassroom.py

+35
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ def _store_substitutions(self, name, url, span):
168168

169169
header_substitutions = ["ODSOTNI UČITELJ/ICA", "URA", "RAZRED", "UČILNICA", "NADOMEŠČA", "PREDMET", "OPOMBA"]
170170
header_lesson_change = ["RAZRED", "URA", "UČITELJ/ICA", "PREDMETA", "UČILNICA", "OPOMBA"]
171+
header_subject_change = ["RAZRED", "URA", "UČITELJ", "PREDMET", "UČILNICA", "OPOMBA"]
171172
header_classroom_change = ["RAZRED", "URA", "UČITELJ/ICA", "PREDMET", "IZ UČILNICE", "V UČILNICO", "OPOMBA"]
172173
header_more_teachers = ["URA", "UČITELJ", "RAZRED", "UČILNICA", "OPOMBA"]
173174
header_reservations = ["URA", "UČILNICA", "REZERVIRAL/A", "OPOMBA"]
@@ -189,6 +190,9 @@ def _store_substitutions(self, name, url, span):
189190
elif row == header_lesson_change:
190191
parser_type = "lesson-change"
191192
continue
193+
elif row == header_subject_change:
194+
parser_type = "subject-change"
195+
continue
192196
elif row == header_classroom_change:
193197
parser_type = "classroom-change"
194198
continue
@@ -266,6 +270,37 @@ def _store_substitutions(self, name, url, span):
266270
)
267271
# fmt: on
268272

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+
269304
elif parser_type == "classroom-change":
270305
time = row[1][:-1] if row[1] != "PU" else 0
271306
subject = self._normalize_other_names(row[3])

0 commit comments

Comments
 (0)