Skip to content
Snippets Groups Projects
Commit f854234d 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
1 merge request!395Resolve "Show only teachers with courses in the current school term"
Pipeline #194029 failed
This commit is part of merge request !395. Comments created here will be created in the context of that merge request.
......@@ -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,
......
......@@ -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