From 090fab85b29bc8c37c77264e661a9df2bd5181b3 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Fri, 23 Aug 2019 19:24:04 +0200
Subject: [PATCH] Fix some errors from implementing #4.

---
 biscuit/apps/chronos/forms.py  |  6 +++---
 biscuit/apps/chronos/models.py |  2 +-
 biscuit/apps/chronos/views.py  | 12 ++++++------
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/biscuit/apps/chronos/forms.py b/biscuit/apps/chronos/forms.py
index 718bfe13..a242f060 100644
--- a/biscuit/apps/chronos/forms.py
+++ b/biscuit/apps/chronos/forms.py
@@ -10,10 +10,10 @@ from .models import Room
 class SelectForm(forms.Form):
     group = forms.ModelChoiceField(
         queryset=Group.objects.annotate(lessons_count=Count('lessons')).filter(lessons_count__gt=0),
-        label=_('Group'))
+        label=_('Group'), required=False)
     teacher = forms.ModelChoiceField(
         queryset=Person.objects.annotate(lessons_count=Count('lessons')).filter(lessons_count__gt=0),
-        label=_('Teacher'))
+        label=_('Teacher'), required=False)
     room = forms.ModelChoiceField(
         queryset=Room.objects.annotate(lessons_count=Count('lesson_periods')).filter(lessons_count__gt=0),
-        label=_('Room'))
+        label=_('Room'), required=False)
diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py
index a6cb52f1..16e23520 100644
--- a/biscuit/apps/chronos/models.py
+++ b/biscuit/apps/chronos/models.py
@@ -101,7 +101,7 @@ class LessonPeriod(models.Model):
     lesson = models.ForeignKey('Lesson', models.CASCADE)
     period = models.ForeignKey('TimePeriod', models.CASCADE)
 
-    room = models.ForeignKey('Room', models.CASCADE, null=True)
+    room = models.ForeignKey('Room', models.CASCADE, null=True, related_name='lesson_periods')
 
     def get_substitution(self, week: Optional[int] = None) -> LessonSubstitution:
         wanted_week = week or current_week()
diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py
index d7c22fcc..a146181f 100644
--- a/biscuit/apps/chronos/views.py
+++ b/biscuit/apps/chronos/views.py
@@ -20,17 +20,17 @@ from .util import current_week
 def timetable(request: HttpRequest) -> HttpResponse:
     context = {}
 
-    if request.GET:
-        lesson_periods = LessonPeriod.objects.all()
+    lesson_periods = LessonPeriod.objects.all()
 
+    if request.GET:
         # Incrementally filter lesson periods by GET parameters
-        if 'group' in request.GET:
+        if 'group' in request.GET and request.GET['group']:
             lesson_periods = lesson_periods.filter(
                 lesson__groups__pk=int(request.GET['group']))
-        if 'teacher' in request.GET:
+        if 'teacher' in request.GET and request.GET['teacher']:
             lesson_periods = lesson_periods.filter(
                 lesson__teachers__pk=int(request.GET['teacher']))
-        if 'room' in request.GET:
+        if 'room' in request.GET and request.GET['room']:
             lesson_periods = lesson_periods.filter(
                 room__pk=int(request.GET['room']))
     else:
@@ -48,7 +48,7 @@ def timetable(request: HttpRequest) -> HttpResponse:
                            {})[lesson_period.period.period] = lesson_period
 
     # Determine overall first and last day and period
-    min_max = TimePeriod.objects..aggregate(
+    min_max = TimePeriod.objects.aggregate(
         Min('period'), Max('period'),
         Min('weekday'), Max('weekday'))
 
-- 
GitLab