diff --git a/biscuit/apps/untis/util.py b/biscuit/apps/untis/util.py index 9bfc367a896f20e617155db33fb37a21a5996793..a2f4c762d6974ac8878eb4178790e69c13abacaa 100644 --- a/biscuit/apps/untis/util.py +++ b/biscuit/apps/untis/util.py @@ -79,6 +79,8 @@ def untis_import_xml(request, untis_xml): messages.warning(request, _('Could not set class teacher of %s to %s.') % ( short_name, class_teacher_short_name)) + Lesson.objects.all().delete() + lessons = dom.getElementsByTagName('lesson') for lesson_node in lessons: subject_abbrev = get_child_node_id(lesson_node, 'lesson_subject')[3:] @@ -93,12 +95,11 @@ def untis_import_xml(request, untis_xml): times = lesson_node.getElementsByTagName('time') time_periods = [] for time_node in times: - day = get_child_node_text(time_node, 'assigned_day') - period = get_child_node_text(time_node, 'assigned_period') + 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)) subject = Subject.objects.get(abbrev=subject_abbrev) - groups = [Group.objects.get(short_name=v) for v in group_short_names] periods = [TimePeriod.objects.get( weekday=v[0], period=v[1]) for v in time_periods] date_start = date(int(effectivebegindate[:4]), int(effectivebegindate[4:6]), int( @@ -106,6 +107,14 @@ def untis_import_xml(request, untis_xml): date_end = date(int(effectiveenddate[:4]), int(effectiveenddate[4:6]), int( effectiveenddate[6:])) if effectiveenddate else None + try: + groups = [Group.objects.get(short_name=v) + for v in group_short_names] + except Group.DoesNotExist: + messages.error(request, _('Invalid list of classes: %s') % + ', '.join(group_short_names)) + continue + try: teachers = [Person.objects.get(short_name=teacher_short_name)] except Person.DoesNotExist: @@ -113,5 +122,10 @@ def untis_import_xml(request, untis_xml): 'Failed to import lesson: Teacher %s does not exist.') % teacher_short_name) continue - lesson, created = Lesson.objects.get_or_create(groups=groups, periods=periods, defaults={ - 'subject': subject, 'teachers': teachers, 'date_start': date_start, 'date_end': date_end}) + lesson = Lesson.objects.create( + subject=subject, date_start=date_start, date_end=date_end) + + lesson.groups.set(groups) + lesson.periods.set(periods) + lesson.teachers.set(teachers) + lesson.save()