From 20998d1d2938ad82439c65672b14253eb0b225f0 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Sat, 11 May 2024 17:44:55 +0200 Subject: [PATCH] Create schema to update participation statuses --- .../absences/participationStatus.graphql | 18 +++++++++++++++ .../components/coursebook/coursebook.graphql | 1 + aleksis/apps/alsijil/schema/__init__.py | 2 ++ .../alsijil/schema/participation_status.py | 22 +++++++++++++++++-- 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 aleksis/apps/alsijil/frontend/components/coursebook/absences/participationStatus.graphql diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/participationStatus.graphql b/aleksis/apps/alsijil/frontend/components/coursebook/absences/participationStatus.graphql new file mode 100644 index 000000000..e75232635 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/participationStatus.graphql @@ -0,0 +1,18 @@ +mutation updateParticipationStatuses( + $input: [BatchPatchParticipationStatusInput]! +) { + updateParticipationStatuses(input: $input) { + items: participationStatuses { + id + isOptimistic + relatedDocumentation { + id + } + absenceReason { + id + name + shortName + } + } + } +} diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql b/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql index dc5c55f1a..83a6a459f 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql +++ b/aleksis/apps/alsijil/frontend/components/coursebook/coursebook.graphql @@ -81,6 +81,7 @@ query documentationsForCoursebook( name shortName } + isOptimistic } topic homework diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index aae1b7060..e4e48be10 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -17,6 +17,7 @@ from .documentation import ( DocumentationBatchCreateOrUpdateMutation, DocumentationType, ) +from .participation_status import ParticipationStatusBatchPatchMutation class Query(graphene.ObjectType): @@ -119,3 +120,4 @@ class Query(graphene.ObjectType): class Mutation(graphene.ObjectType): create_or_update_documentations = DocumentationBatchCreateOrUpdateMutation.Field() + update_participation_statuses = ParticipationStatusBatchPatchMutation.Field() diff --git a/aleksis/apps/alsijil/schema/participation_status.py b/aleksis/apps/alsijil/schema/participation_status.py index 48053dc22..e99586e2e 100644 --- a/aleksis/apps/alsijil/schema/participation_status.py +++ b/aleksis/apps/alsijil/schema/participation_status.py @@ -1,10 +1,20 @@ from graphene_django import DjangoObjectType from aleksis.apps.alsijil.models import ParticipationStatus -from aleksis.core.schema.base import DjangoFilterMixin, PermissionsTypeMixin +from aleksis.core.schema.base import ( + BaseBatchPatchMutation, + DjangoFilterMixin, + OptimisticResponseTypeMixin, + PermissionsTypeMixin, +) -class ParticipationStatusType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObjectType): +class ParticipationStatusType( + OptimisticResponseTypeMixin, + PermissionsTypeMixin, + DjangoFilterMixin, + DjangoObjectType, +): class Meta: model = ParticipationStatus fields = ( @@ -14,3 +24,11 @@ class ParticipationStatusType(PermissionsTypeMixin, DjangoFilterMixin, DjangoObj "related_documentation", "base_absence", ) + + +class ParticipationStatusBatchPatchMutation(BaseBatchPatchMutation): + class Meta: + model = ParticipationStatus + fields = ("id", "absence_reason") # Only the reason can be updated after creation + permissions = ("alsijil.change_participation_status",) # FIXME + return_field_name = "participationStatuses" -- GitLab