diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py
index c458fa5671e5932bf584d81565bbd15b012b8b59..d7c22fcc90a43657d28ca27b484f3d3429d08d55 100644
--- a/biscuit/apps/chronos/views.py
+++ b/biscuit/apps/chronos/views.py
@@ -20,18 +20,21 @@ from .util import current_week
 def timetable(request: HttpRequest) -> HttpResponse:
     context = {}
 
-    lesson_periods = LessonPeriod.objects.all()
+    if request.GET:
+        lesson_periods = LessonPeriod.objects.all()
 
-    if 'group' in request.GET:
-        lesson_periods = lesson_periods.filter(
-            lesson__groups__pk=int(request.GET['group']))
-    elif 'teacher' in request.GET:
-        lesson_periods = lesson_periods.filter(
-            lesson__teachers__pk=int(request.GET['teacher']))
-    elif 'room' in request.GET:
-        lesson_periods = lesson_periods.filter(
-            room__pk=int(request.GET['room']))
+        # Incrementally filter lesson periods by GET parameters
+        if 'group' in request.GET:
+            lesson_periods = lesson_periods.filter(
+                lesson__groups__pk=int(request.GET['group']))
+        if 'teacher' in request.GET:
+            lesson_periods = lesson_periods.filter(
+                lesson__teachers__pk=int(request.GET['teacher']))
+        if 'room' in request.GET:
+            lesson_periods = lesson_periods.filter(
+                room__pk=int(request.GET['room']))
     else:
+        # Redirect to a selected view if no filter provided
         if request.user.person:
             if request.user.person.primary_group:
                 return redirect(reverse('timetable') + '?group=%d' % request.user.person.primary_group.pk)