diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index cb0c6b1d16c5dab002794872afd177fa9da1b281..8f6bc40c8c56af627941e64605c06df4414b2f49 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -13,7 +13,12 @@ from aleksis.core.models import Group, Person from aleksis.core.schema.base import FilterOrderList from aleksis.core.schema.group import GroupType from aleksis.core.schema.person import PersonType -from aleksis.core.util.core_helpers import get_active_school_term, get_site_preferences, has_person +from aleksis.core.util.core_helpers import ( + filter_active_school_term, + get_active_school_term, + get_site_preferences, + has_person, +) from ..model_extensions import annotate_person_statistics_for_school_term from ..models import Documentation, NewPersonalNote, ParticipationStatus @@ -152,12 +157,24 @@ class Query(graphene.ObjectType): } ) + school_term = get_active_school_term(info.context) + q = Q( + pk__in=LessonEvent.objects.filter(groups__school_term=school_term) + .values_list("id", flat=True) + .union( + LessonEvent.objects.filter(course__groups__school_term=school_term).values_list( + "id", flat=True + ) + ) + ) + qs = LessonEvent.objects.filter(q) events = LessonEvent.get_single_events( datetime.combine(date_start, datetime.min.time()), datetime.combine(date_end, datetime.max.time()), info.context, event_params, with_reference_object=True, + queryset=qs, ) # Lookup or create documentations and return them all. @@ -182,8 +199,10 @@ class Query(graphene.ObjectType): else: return [] + school_term = get_active_school_term(info.context) + return ( - Group.objects.for_current_school_term_or_all() + Group.objects.for_school_term(school_term) .filter( pk__in=Group.objects.filter(members=person) .values_list("id", flat=True) @@ -211,6 +230,9 @@ class Query(graphene.ObjectType): person = info.context.user.person else: return [] + + school_term = get_active_school_term(info.context) + return Course.objects.filter( pk__in=( Course.objects.filter(teachers=person) @@ -223,20 +245,22 @@ class Query(graphene.ObjectType): ) ) ) - ).filter(groups__in=Group.objects.for_current_school_term_or_all()) + ).filter(groups__in=Group.objects.for_school_term(school_term)) @staticmethod def resolve_absence_creation_persons(root, info, **kwargs): if not info.context.user.has_perm("alsijil.register_absence"): group_types = get_site_preferences()["alsijil__group_types_register_absence"] + school_term = get_active_school_term(info.context) if group_types: return Person.objects.filter( - member_of__in=Group.objects.filter( + member_of__in=Group.objects.for_school_term(school_term).filter( owners=info.context.user.person, group_type__in=group_types ) ) else: - return Person.objects.filter(member_of__owners=info.context.user.person) + qs = Person.objects.filter(member_of__owners=info.context.user.person) + return filter_active_school_term(info.context, qs, "member_of__school_term") return Person.objects.all() @staticmethod diff --git a/aleksis/apps/alsijil/schema/documentation.py b/aleksis/apps/alsijil/schema/documentation.py index b833de336b2a2add64ac5f0e0cf6dd7fdd8ae0c5..159ca08f47d41e23e3b4edb1194eff1e41fba6bd 100644 --- a/aleksis/apps/alsijil/schema/documentation.py +++ b/aleksis/apps/alsijil/schema/documentation.py @@ -20,7 +20,7 @@ from aleksis.core.schema.base import ( DjangoFilterMixin, PermissionsTypeMixin, ) -from aleksis.core.util.core_helpers import has_person +from aleksis.core.util.core_helpers import filter_active_school_term, has_person from ..models import Documentation from .participation_status import ParticipationStatusType @@ -114,6 +114,13 @@ class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp return [] return root.participations.all() + @classmethod + def get_queryset(cls, queryset, info): + qs = super().get_queryset(queryset, info) + return filter_active_school_term( + info.context, qs, school_term_field="course__groups__school_term" + ) + class DocumentationInputType(graphene.InputObjectType): id = graphene.ID(required=True)