diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index 7d869c497a9ecbefc699fb1da379af635bd9fe79..e628fecb509ea4a897eae693a0d1403f435a27fa 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -139,7 +139,6 @@ class Documentation(CalendarEvent): events: list, incomplete: Optional[bool] = False, absences_exist: Optional[bool] = False, - request: Optional[HttpRequest] = None, ) -> tuple: """Get all the documentations for the events. Create dummy documentations if none exist. @@ -149,11 +148,15 @@ class Documentation(CalendarEvent): dummies = [] # Prefetch existing documentations to speed things up - existing_documentations = Documentation.objects.filter( - datetime_start__lte=datetime_end, - datetime_end__gte=datetime_start, - amends__in=[e["REFERENCE_OBJECT"] for e in events], - ).prefetch_related("participations") + existing_documentations = ( + Documentation.objects.filter( + datetime_start__lte=datetime_end, + datetime_end__gte=datetime_start, + amends__in=[e["REFERENCE_OBJECT"] for e in events], + ) + .prefetch_related("participations", "teachers") + .select_related("course", "subject") + ) for event in events: if incomplete and event["STATUS"] == "CANCELLED": @@ -214,7 +217,6 @@ class Documentation(CalendarEvent): start: datetime, end: datetime, incomplete: Optional[bool] = False, - request: Optional[HttpRequest] = None, ) -> tuple: """Get all the documentations for the person from start to end datetime. Create dummy documentations if none exist. @@ -233,7 +235,7 @@ class Documentation(CalendarEvent): with_reference_object=True, ) - return Documentation.get_documentations_for_events(start, end, events, incomplete, request) + return Documentation.get_documentations_for_events(start, end, events, incomplete) @classmethod def parse_dummy( diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index ed3d21c411441343ca5205140018d33511641eec..604cda6cd229533086533d855563a892f440d572 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -4,7 +4,6 @@ from django.db.models import BooleanField, ExpressionWrapper, Q import graphene import graphene_django_optimizer -from guardian.shortcuts import get_objects_for_user from aleksis.apps.chronos.models import LessonEvent from aleksis.apps.cursus.models import Course @@ -54,7 +53,6 @@ from .statistics import StatisticsByPersonType class Query(graphene.ObjectType): - documentations = FilterOrderList(DocumentationType) documentations_by_course_id = FilterOrderList( DocumentationType, course_id=graphene.ID(required=True) ) @@ -101,19 +99,6 @@ class Query(graphene.ObjectType): group=graphene.ID(required=True), ) - @staticmethod - def resolve_documentations(root, info, **kwargs): - qs = filter_active_school_term( - info.context, - Documentation.objects.all(), - school_term_field="course__groups__school_term", - ) - if not info.context.user.has_perm("alsijil.view_documentation_rule"): - return graphene_django_optimizer.query( - get_objects_for_user(info.context.user, "alsijil.view_documetation_rule", qs), info - ) - return graphene_django_optimizer.query(qs, info) - def resolve_documentations_by_course_id(root, info, course_id, **kwargs): documentations = Documentation.objects.filter( pk__in=Documentation.objects.filter(course_id=course_id) @@ -173,23 +158,15 @@ 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) + date_start = date_start if date_start > school_term.date_start else school_term.date_start + date_end = date_end if date_end < school_term.date_end else school_term.date_end + 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. @@ -199,7 +176,6 @@ class Query(graphene.ObjectType): events, incomplete, absences_exist, - info.context, ) return docs + dummies @@ -294,7 +270,6 @@ class Query(graphene.ObjectType): person, start, end, - info.context, ) lessons_for_person.append(LessonsForPersonType(id=person, lessons=docs + dummies))