From 47cc5796c1eec99d0c131141aa8d661a67e46a0c Mon Sep 17 00:00:00 2001 From: Michael Bauer <michael-bauer@posteo.de> Date: Thu, 2 May 2024 17:56:28 +0200 Subject: [PATCH] Implement lessons-for-persons query handler --- .../absences/absenceCreation.graphql | 7 +-- aleksis/apps/alsijil/schema/__init__.py | 52 ++++++++----------- 2 files changed, 27 insertions(+), 32 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql b/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql index 130b5cabb..a7028c74f 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql @@ -17,15 +17,16 @@ query lessonsForPersons( end: $end ) { id - fullname lessons { - start - end + id + datetimeStart + datetimeEnd course subject } } } +# TODO: course is missing in LessonEventType # Use absencesInputType mutation createAbsences( diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index 7803b6127..1bab10d51 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -11,6 +11,7 @@ from aleksis.core.models import Group, Person from aleksis.core.schema.base import FilterOrderList from aleksis.core.schema.group import GroupType from aleksis.core.util.core_helpers import has_person +from aleksis.apps.chronos.models import LessonEvent from ..models import Documentation from .documentation import ( @@ -123,7 +124,8 @@ class Query(graphene.ObjectType): | Q(groups__parent_groups__owners=person) ) - def lessons_for_persons( + @staticmethod + def resolve_lessons_for_persons( root, info, persons, @@ -131,36 +133,28 @@ class Query(graphene.ObjectType): end, **kwargs, ): - # Do date like resolve_documentations_for_coursebook? - - # Get all lesson events for person - # Make this reusable for mutation -> Einzeiler - # Pack into (id fullname lesson (start end course subject ...)) - - event_params = { - "type": "PARTICIPANT", - "obj_id": PERSON_ID, - } - - # get_objects (lesson_events chronos models.py) - # adapt own -> person as param - # _put list of person IDs in event_params_ - - events = LessonEvent.get_single_events( - start, - end, - None, - event_params, - with_reference_object=True, - ) + """Resolve all lesson events for each person in timeframe start to end. + """ + lessons_for_person = [] + for person in persons: + event_params = { + "type": "PARTICIPANT", + "obj_id": PERSON_ID, + } + + lessons_for_person.append( + id=person, + lessons=LessonEvent.get_single_events( + datetime.combine(start, datetime.min.time()), + datetime.combine(date_end, datetime.max.time()), + None, + event_params, + with_reference_object=True, + ) + ) - return [id - - get_single_events -> python object ical - # Use own graphene types (wrapper, & event - # then populate them here + return lessons_for_person - return class Mutation(graphene.ObjectType): create_or_update_documentations = DocumentationBatchCreateOrUpdateMutation.Field() -- GitLab