From b088c0bc0fd96e83050781b38bfdd1014397a6c8 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Sat, 18 May 2024 15:25:47 +0200 Subject: [PATCH] Create types for ExtraMarks --- aleksis/apps/alsijil/schema/__init__.py | 12 ++++++ aleksis/apps/alsijil/schema/extra_marks.py | 43 ++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 aleksis/apps/alsijil/schema/extra_marks.py diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index 48e1c20c6..62440a144 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -12,6 +12,12 @@ 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 .extra_marks import ( + ExtraMarkBatchCreateMutation, + ExtraMarkBatchPatchMutation, + ExtraMarkBatchDeleteMutation, + ExtraMarkType, +) from ..models import Documentation from .documentation import ( @@ -48,6 +54,8 @@ class Query(graphene.ObjectType): end=graphene.Date(required=True), ) + extra_marks = FilterOrderList(ExtraMarkType) + def resolve_documentations_by_course_id(root, info, course_id, **kwargs): documentations = Documentation.objects.filter( Q(course__pk=course_id) | Q(amends__course__pk=course_id) @@ -171,3 +179,7 @@ class Mutation(graphene.ObjectType): create_or_update_documentations = DocumentationBatchCreateOrUpdateMutation.Field() touch_documentation = TouchDocumentationMutation.Field() update_participation_statuses = ParticipationStatusBatchPatchMutation.Field() + + create_extra_marks = ExtraMarkBatchCreateMutation.Field() + update_extra_marks = ExtraMarkBatchPatchMutation.Field() + delete_extra_marks = ExtraMarkBatchDeleteMutation.Field() diff --git a/aleksis/apps/alsijil/schema/extra_marks.py b/aleksis/apps/alsijil/schema/extra_marks.py new file mode 100644 index 000000000..912821014 --- /dev/null +++ b/aleksis/apps/alsijil/schema/extra_marks.py @@ -0,0 +1,43 @@ +from graphene_django import DjangoObjectType + +from aleksis.apps.alsijil.models import ExtraMark +from aleksis.core.schema.base import OptimisticResponseTypeMixin, PermissionsTypeMixin, DjangoFilterMixin, \ + BaseBatchCreateMutation, BaseBatchDeleteMutation, BaseBatchPatchMutation + + +class ExtraMarkType( + OptimisticResponseTypeMixin, + PermissionsTypeMixin, + DjangoFilterMixin, + DjangoObjectType, +): + class Meta: + model = ExtraMark + fields = ( + "id", + "short_name", + "name", + "colour_fg", + "colour_bg", + "show_in_coursebook" + ) + +class ExtraMarkBatchCreateMutation(BaseBatchCreateMutation): + class Meta: + model = ExtraMark + fields = ("short_name", "name", "colour_fg", "colour_bg", "show_in_coursebook") + optional_fields = ("name",) + permissions = ("alsijil.create_extra_mark",) # FIXME + + +class ExtraMarkBatchDeleteMutation(BaseBatchDeleteMutation): + class Meta: + model = ExtraMark + permission_required = "alsijil.delete_extra_mark" # FIXME + + +class ExtraMarkBatchPatchMutation(BaseBatchPatchMutation): + class Meta: + model = ExtraMark + fields = ("id", "short_name", "name", "colour_fg", "colour_bg", "show_in_coursebook") + permissions = ("alsijil.change_extra_mark",) # FIXME -- GitLab