diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index 48e1c20c62434cb9154d9e0faa9904dd09c84641..62440a144a86e09ae7abf9a1d189cd79c6925d7f 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 0000000000000000000000000000000000000000..9128210149e5aa49aaa1038c1b7713a107bb59c3 --- /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