From a279d366334160093ee67d7a2f84c6eb5c833094 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Sun, 19 May 2024 18:54:59 +0200 Subject: [PATCH] Create schemata for personal notes --- aleksis/apps/alsijil/schema/__init__.py | 9 ++++ .../alsijil/schema/participation_status.py | 22 +++++++++- aleksis/apps/alsijil/schema/personal_note.py | 44 +++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 aleksis/apps/alsijil/schema/personal_note.py diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index 62440a144..4ecfef27e 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -18,6 +18,11 @@ from .extra_marks import ( ExtraMarkBatchDeleteMutation, ExtraMarkType, ) +from .personal_note import ( + PersonalNoteBatchCreateMutation, + PersonalNoteBatchDeleteMutation, + PersonalNoteBatchPatchMutation, +) from ..models import Documentation from .documentation import ( @@ -183,3 +188,7 @@ class Mutation(graphene.ObjectType): create_extra_marks = ExtraMarkBatchCreateMutation.Field() update_extra_marks = ExtraMarkBatchPatchMutation.Field() delete_extra_marks = ExtraMarkBatchDeleteMutation.Field() + + create_personal_note = PersonalNoteBatchCreateMutation.Field() + update_personal_note = PersonalNoteBatchPatchMutation.Field() + delete_personal_note = PersonalNoteBatchDeleteMutation.Field() diff --git a/aleksis/apps/alsijil/schema/participation_status.py b/aleksis/apps/alsijil/schema/participation_status.py index e99586e2e..2e5a99faf 100644 --- a/aleksis/apps/alsijil/schema/participation_status.py +++ b/aleksis/apps/alsijil/schema/participation_status.py @@ -1,6 +1,8 @@ +import graphene from graphene_django import DjangoObjectType -from aleksis.apps.alsijil.models import ParticipationStatus +from aleksis.apps.alsijil.models import ParticipationStatus, NewPersonalNote +from aleksis.apps.alsijil.schema.personal_note import PersonalNoteType from aleksis.core.schema.base import ( BaseBatchPatchMutation, DjangoFilterMixin, @@ -25,6 +27,24 @@ class ParticipationStatusType( "base_absence", ) + extra_mark_notes = graphene.List(PersonalNoteType) + note_notes = graphene.List(PersonalNoteType) + + @staticmethod + def resolve_extra_mark_notes(root: ParticipationStatus, info, **kwargs): + return NewPersonalNote.objects.filter( + person=root.person, + documentation=root.related_documentation, + extra_mark__isnull=False, + ) + @staticmethod + def resolve_note_notes(root: ParticipationStatus, info, **kwargs): + return NewPersonalNote.objects.filter( + person=root.person, + documentation=root.related_documentation, + note__isnull=False, + ) + class ParticipationStatusBatchPatchMutation(BaseBatchPatchMutation): class Meta: diff --git a/aleksis/apps/alsijil/schema/personal_note.py b/aleksis/apps/alsijil/schema/personal_note.py new file mode 100644 index 000000000..33f44b5ef --- /dev/null +++ b/aleksis/apps/alsijil/schema/personal_note.py @@ -0,0 +1,44 @@ +from graphene_django import DjangoObjectType + +from aleksis.apps.alsijil.models import NewPersonalNote +from aleksis.core.schema.base import ( + DjangoFilterMixin, + BaseBatchCreateMutation, + BaseBatchDeleteMutation, + BaseBatchPatchMutation, + OptimisticResponseTypeMixin, + PermissionsTypeMixin, +) + + +class PersonalNoteType( + OptimisticResponseTypeMixin, + PermissionsTypeMixin, + DjangoFilterMixin, + DjangoObjectType, +): + class Meta: + model = NewPersonalNote + fields = ( + "id", + "note", + "extra_mark", + ) + +class PersonalNoteBatchCreateMutation(BaseBatchCreateMutation): + class Meta: + model = NewPersonalNote + fields = ("note", "extra_mark", "documentation", "person") + permissions = ("alsijil.create_personal_note",) # FIXME + + +class PersonalNoteBatchPatchMutation(BaseBatchPatchMutation): + class Meta: + model = NewPersonalNote + fields = ("id", "note", "extra_mark", "documentation", "person") + permissions = ("alsijil.change_personal_note",) # FIXME + +class PersonalNoteBatchDeleteMutation(BaseBatchDeleteMutation): + class Meta: + model = NewPersonalNote + permission_required = "alsijil.delete_personal_note" # FIXME -- GitLab