From e319b916a13b0494c9148d3214672c46360a04c7 Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Mon, 4 Nov 2024 00:58:47 +0100
Subject: [PATCH] Hide persons without courses on timetable list

---
 aleksis/apps/chronos/util/chronos_helpers.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/aleksis/apps/chronos/util/chronos_helpers.py b/aleksis/apps/chronos/util/chronos_helpers.py
index 045c132a..961fb014 100644
--- a/aleksis/apps/chronos/util/chronos_helpers.py
+++ b/aleksis/apps/chronos/util/chronos_helpers.py
@@ -1,7 +1,7 @@
 from datetime import date, datetime, timedelta
 from typing import TYPE_CHECKING, Optional
 
-from django.db.models import Q
+from django.db.models import Count, Q
 
 from guardian.shortcuts import get_objects_for_user
 
@@ -19,7 +19,11 @@ if TYPE_CHECKING:
 def get_teachers(user: "User"):
     """Get the teachers whose timetables are allowed to be seen by current user."""
 
-    teachers = Person.objects.all().order_by("short_name", "last_name")
+    teachers = (
+        Person.objects.annotate(course_count=Count("courses_as_teacher"))
+        .filter(course_count__gt=0)
+        .order_by("short_name", "last_name")
+    )
 
     if not user.has_perm("chronos.view_all_person_timetables"):
         teachers.filter(
-- 
GitLab