From 3b189703d41269bcafeec9ede529e64d26302134 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Tue, 30 Apr 2024 13:39:21 +0200 Subject: [PATCH] Create schema for participation_status --- aleksis/apps/alsijil/schema/documentation.py | 12 ++++++++++++ .../apps/alsijil/schema/participation_status.py | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 aleksis/apps/alsijil/schema/participation_status.py diff --git a/aleksis/apps/alsijil/schema/documentation.py b/aleksis/apps/alsijil/schema/documentation.py index 3225db34e..c28fd2003 100644 --- a/aleksis/apps/alsijil/schema/documentation.py +++ b/aleksis/apps/alsijil/schema/documentation.py @@ -19,6 +19,7 @@ from aleksis.core.schema.base import ( PermissionsTypeMixin, ) from aleksis.core.util.core_helpers import get_site_preferences +from .participation_status import ParticipationStatusType from ..models import Documentation @@ -39,6 +40,7 @@ class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp "date_start", "date_end", "teachers", + "participations", ) filter_fields = { "id": ["exact", "lte", "gte"], @@ -48,6 +50,7 @@ class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp course = graphene.Field(CourseType, required=False) amends = graphene.Field(lambda: LessonEventType, required=False) subject = graphene.Field(SubjectType, required=False) + participations = graphene.List(ParticipationStatusType, required=False) future_notice = graphene.Boolean(required=False) @@ -71,6 +74,15 @@ class DocumentationType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectTyp info.context.user, root ) + @staticmethod + def resolve_participations(root: Documentation, info, **kwargs): + # TODO: probably check for permission + + # A dummy documentation will not have any participations + if str(root.pk).startswith("DUMMY") or not hasattr(root, "participations"): + return [] + return root.participations.all() + @classmethod def get_queryset(cls, queryset, info): return get_objects_for_user(info.context.user, "alsijil.view_documentation", queryset) diff --git a/aleksis/apps/alsijil/schema/participation_status.py b/aleksis/apps/alsijil/schema/participation_status.py new file mode 100644 index 000000000..86254a86c --- /dev/null +++ b/aleksis/apps/alsijil/schema/participation_status.py @@ -0,0 +1,16 @@ +from graphene_django import DjangoObjectType + +from aleksis.apps.alsijil.models import ParticipationStatus +from aleksis.core.schema.base import PermissionsTypeMixin, DjangoFilterMixin + + +class ParticipationStatusType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): + class Meta: + model = ParticipationStatus + fields = ( + "id", + "person", + "absence_reason", + "related_documentation", + "base_absence", + ) -- GitLab