Skip to content
Snippets Groups Projects
Commit a15f2aa4 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Merge branch '274-show-only-teachers-with-courses-in-the-current-school-term' into 'master'

Resolve "Show only teachers with courses in the current school term"

Closes #274

See merge request !395
parents c0e6c1bc f854234d
No related branches found
No related tags found
1 merge request!395Resolve "Show only teachers with courses in the current school term"
Pipeline #194041 canceled
......@@ -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