diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index 8e2ba63245acb6364292d20def6a39a578affdd6..e1cbb7c9110d1a89f3880d25b2f804f94ebce61c 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -143,18 +143,18 @@ class LessonDataQuerySet(models.QuerySet):
     def filter_teacher(self, teacher: Union[Person, int]):
         """ Filter for all lessons given by a certain teacher. """
 
-        return self.filter(
-            Q(**{self._subst_path + "teachers": teacher, self._subst_path + "week": F("_week"),})
-            | Q(**{self._period_path + "lesson__teachers": teacher})
-        )
+        qs1 = self.filter(**{self._period_path + "lesson__teachers": teacher})
+        qs2 = self.filter(**{self._subst_path + "teachers": teacher, self._subst_path + "week": F("_week"), })
+
+        return qs1.union(qs2)
 
     def filter_room(self, room: Union[Room, int]):
         """ Filter for all lessons taking part in a certain room. """
 
-        return self.filter(
-            Q(**{self._subst_path + "room": room, self._subst_path + "week": F("_week"),})
-            | Q(**{self._period_path + "room": room})
-        )
+        qs1 = self.filter(**{self._period_path + "room": room})
+        qs2 = self.filter(**{self._subst_path + "room": room, self._subst_path + "week": F("_week"),})
+
+        return qs1.union(qs2)
 
     def annotate_week(self, week: Union[CalendarWeek, int]):
         """ Annotate all lessons in the QuerySet with the number of the provided calendar week. """
@@ -227,7 +227,7 @@ class LessonPeriodQuerySet(LessonDataQuerySet):
         elif type_ == "group":
             # Student
 
-            return person.lesson_periods_as_participant
+            return self.filter(lesson__groups__members=person)
 
         else:
             # If no student or teacher
@@ -237,7 +237,7 @@ class LessonPeriodQuerySet(LessonDataQuerySet):
         if person.timetable_type is None:
             return None
 
-        lesson_periods = LessonPeriod.objects.on_day(wanted_day).filter_from_person(person)
+        lesson_periods = self.on_day(wanted_day).filter_from_person(person)
 
         return lesson_periods
 
@@ -765,7 +765,10 @@ class SupervisionQuerySet(models.QuerySet):
         """ Filter for all supervisions given by a certain teacher. """
 
         if self.count() > 0:
-            week = CalendarWeek(week=self[0]._week)
+            if hasattr(self[0], "_week"):
+                week = CalendarWeek(week=self[0]._week)
+            else:
+                week = CalendarWeek.current_week()
 
             dates = [week[w] for w in range(0, 7)]