From bad26c8cbf4d6e3a7e548317bb13e0d4dacd4887 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Wed, 17 Jul 2019 00:51:57 +0200
Subject: [PATCH] Store room information for time periods.

---
 biscuit/apps/untis/util.py | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/biscuit/apps/untis/util.py b/biscuit/apps/untis/util.py
index a2f4c76..8ec19df 100644
--- a/biscuit/apps/untis/util.py
+++ b/biscuit/apps/untis/util.py
@@ -97,11 +97,15 @@ def untis_import_xml(request, untis_xml):
         for time_node in times:
             day = int(get_child_node_text(time_node, 'assigned_day'))
             period = int(get_child_node_text(time_node, 'assigned_period'))
-            time_periods.append((day, period))
+
+            room_id = get_child_node_id(time_node, 'assigned_room')
+            room = room_id[3:] if room_id else None
+
+            time_periods.append((day, period, room))
 
         subject = Subject.objects.get(abbrev=subject_abbrev)
-        periods = [TimePeriod.objects.get(
-            weekday=v[0], period=v[1]) for v in time_periods]
+        periods = [(TimePeriod.objects.get(
+            weekday=v[0], period=v[1]), Room.objects.get(short_name=v[2]) if v[2] else None) for v in time_periods]
         date_start = date(int(effectivebegindate[:4]), int(effectivebegindate[4:6]), int(
             effectivebegindate[6:])) if effectivebegindate else None
         date_end = date(int(effectiveenddate[:4]), int(effectiveenddate[4:6]), int(
@@ -126,6 +130,9 @@ def untis_import_xml(request, untis_xml):
             subject=subject, date_start=date_start, date_end=date_end)
 
         lesson.groups.set(groups)
-        lesson.periods.set(periods)
         lesson.teachers.set(teachers)
+
+        for period in periods:
+            lesson.periods.add(period[0], through_defaults={'room': period[1]})
+
         lesson.save()
-- 
GitLab