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): ...@@ -242,7 +242,7 @@ class Query(graphene.ObjectType):
timetable_days = graphene.List(graphene.Int) timetable_days = graphene.List(graphene.Int)
def resolve_timetable_teachers(self, info, **kwargs): 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): def resolve_timetable_groups(self, info, **kwargs):
return graphene_django_optimizer.query( return graphene_django_optimizer.query(
...@@ -264,7 +264,7 @@ class Query(graphene.ObjectType): ...@@ -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( all_timetables.append(
TimetableObjectType( TimetableObjectType(
id=teacher.id, id=teacher.id,
......
...@@ -8,8 +8,12 @@ from django.shortcuts import get_object_or_404 ...@@ -8,8 +8,12 @@ from django.shortcuts import get_object_or_404
from guardian.shortcuts import get_objects_for_user from guardian.shortcuts import get_objects_for_user
from aleksis.apps.cursus.models import Course from aleksis.apps.cursus.models import Course
from aleksis.core.models import Announcement, Group, Person, Room, SchoolTerm from aleksis.core.models import Announcement, Group, Person, Room
from aleksis.core.util.core_helpers import get_active_school_term, get_site_preferences from aleksis.core.util.core_helpers import (
filter_active_school_term,
get_active_school_term,
get_site_preferences,
)
from ..managers import TimetableType from ..managers import TimetableType
from .build import build_substitutions_list from .build import build_substitutions_list
...@@ -43,11 +47,16 @@ def get_el_by_pk( ...@@ -43,11 +47,16 @@ def get_el_by_pk(
return HttpResponseNotFound() 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.""" """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 = ( 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) .filter(course_count__gt=0)
.order_by("short_name", "last_name") .order_by("short_name", "last_name")
) )
...@@ -66,9 +75,7 @@ def get_teachers(user: "User"): ...@@ -66,9 +75,7 @@ def get_teachers(user: "User"):
def get_groups(user: "User", request=None): def get_groups(user: "User", request=None):
"""Get the groups whose timetables are allowed to be seen by current user.""" """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 = filter_active_school_term(request, Group.objects.all())
groups = Group.objects.for_school_term(school_term)
group_types = get_site_preferences()["chronos__group_types_timetables"] 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