Skip to content
Snippets Groups Projects
Commit dd1e773c authored by magicfelix's avatar magicfelix
Browse files

Show only teachers with courses in the current school term

parent c0e6c1bc
No related branches found
No related tags found
No related merge requests found
Pipeline #194026 failed
......@@ -242,7 +242,7 @@ 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.useri, request=info.context), info)
def resolve_timetable_groups(self, info, **kwargs):
return graphene_django_optimizer.query(
......@@ -264,7 +264,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,
......
......@@ -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"]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment