From f854234d4922a023968d62405fcc62534fc87086 Mon Sep 17 00:00:00 2001 From: magicfelix <felix@felix-zauberer.de> Date: Sat, 30 Nov 2024 15:45:43 +0100 Subject: [PATCH] Show only teachers with courses in the current school term --- aleksis/apps/chronos/schema/__init__.py | 6 ++++-- aleksis/apps/chronos/util/chronos_helpers.py | 21 +++++++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/aleksis/apps/chronos/schema/__init__.py b/aleksis/apps/chronos/schema/__init__.py index 898de1e3..7529b009 100644 --- a/aleksis/apps/chronos/schema/__init__.py +++ b/aleksis/apps/chronos/schema/__init__.py @@ -242,7 +242,9 @@ class Query(graphene.ObjectType): timetable_days = graphene.List(graphene.Int) def resolve_timetable_teachers(self, info, **kwargs): - return graphene_django_optimizer.query(get_teachers(info.context.user), info) + return graphene_django_optimizer.query( + get_teachers(info.context.user, request=info.context), info + ) def resolve_timetable_groups(self, info, **kwargs): return graphene_django_optimizer.query( @@ -264,7 +266,7 @@ class Query(graphene.ObjectType): ) ) - for teacher in get_teachers(info.context.user): + for teacher in get_teachers(info.context.user, request=info.context): all_timetables.append( TimetableObjectType( id=teacher.id, diff --git a/aleksis/apps/chronos/util/chronos_helpers.py b/aleksis/apps/chronos/util/chronos_helpers.py index 851db2b1..0adb0bd6 100644 --- a/aleksis/apps/chronos/util/chronos_helpers.py +++ b/aleksis/apps/chronos/util/chronos_helpers.py @@ -8,8 +8,12 @@ from django.shortcuts import get_object_or_404 from guardian.shortcuts import get_objects_for_user from aleksis.apps.cursus.models import Course -from aleksis.core.models import Announcement, Group, Person, Room, SchoolTerm -from aleksis.core.util.core_helpers import get_active_school_term, get_site_preferences +from aleksis.core.models import Announcement, Group, Person, Room +from aleksis.core.util.core_helpers import ( + filter_active_school_term, + get_active_school_term, + get_site_preferences, +) from ..managers import TimetableType from .build import build_substitutions_list @@ -43,11 +47,16 @@ def get_el_by_pk( return HttpResponseNotFound() -def get_teachers(user: "User"): +def get_teachers(user: "User", request=None): """Get the teachers whose timetables are allowed to be seen by current user.""" + school_term = get_active_school_term(request) + + q = Q(courses_as_teacher__groups__school_term=school_term) | Q( + courses_as_teacher__groups__school_term=None + ) teachers = ( - Person.objects.annotate(course_count=Count("courses_as_teacher")) + Person.objects.annotate(course_count=Count("courses_as_teacher", filter=q)) .filter(course_count__gt=0) .order_by("short_name", "last_name") ) @@ -66,9 +75,7 @@ def get_teachers(user: "User"): def get_groups(user: "User", request=None): """Get the groups whose timetables are allowed to be seen by current user.""" - school_term = get_active_school_term(request) if request is not None else SchoolTerm.current - - groups = Group.objects.for_school_term(school_term) + groups = filter_active_school_term(request, Group.objects.all()) group_types = get_site_preferences()["chronos__group_types_timetables"] -- GitLab