Skip to content
Snippets Groups Projects
Commit 37317563 authored by Hangzhi Yu's avatar Hangzhi Yu
Browse files

Add update/create mutation for documentations

parent 2d58b4c4
No related branches found
No related tags found
2 merge requests!352Draft: Resolve "Add dialog with each lesson's students",!350Resolve "Add simple course book list"
Pipeline #167044 failed
......@@ -10,6 +10,7 @@ from .documentation import (
DocumentationBatchCreateMutation,
DocumentationBatchPatchMutation,
DocumentationCreateMutation,
DocumentationCreateOrUpdateMutation,
DocumentationDeleteMutation,
DocumentationType,
)
......@@ -46,3 +47,5 @@ class Mutation(graphene.ObjectType):
create_documentations = DocumentationBatchCreateMutation.Field()
delete_documentation = DocumentationDeleteMutation.Field()
update_documentations = DocumentationBatchPatchMutation.Field()
create_or_update_documentation = DocumentationCreateOrUpdateMutation.Field()
import graphene
from graphene_django.types import DjangoObjectType
from graphene_django_cud.mutations import (
DjangoBatchCreateMutation,
......@@ -6,13 +7,13 @@ from graphene_django_cud.mutations import (
)
from guardian.shortcuts import get_objects_for_user
from aleksis.apps.chronos.models import LessonEvent
from aleksis.core.schema.base import (
DeleteMutation,
DjangoFilterMixin,
PermissionBatchPatchMixin,
PermissionsTypeMixin,
)
from ..models import Documentation
......@@ -113,3 +114,44 @@ class DocumentationBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatc
"date_end",
)
permissions = ("alsijil.edit_documentation_rule",) # FIXME
class DocumentationInputType(graphene.InputObjectType):
course = graphene.ID(required=False)
subject = graphene.ID(required=False)
topic = graphene.String(required=False)
homework = graphene.String(required=False)
group_note = graphene.String(required=False)
class DocumentationCreateOrUpdateMutation(graphene.Mutation):
class Arguments:
id = graphene.ID(required=True)
input = DocumentationInputType(required=False)
documentation = graphene.Field(DocumentationType)
@classmethod
def mutate(cls, root, info, id, input):
# Sadly, we can't use the update_or_create method since create_defaults is only introduced in Django 5.0
if id.startswith("DUMMY"):
dummy, lesson_event_id, datetime_start, datetime_end = id.split(";")
obj = Documentation.objects.create(
datetime_start=datetime_start,
datetime_end=datetime_end,
lesson_event=LessonEvent.objects.get(id=lesson_event_id),
topic=input.topic,
homework=input.homework,
group_note=input.group_note,
) # TODO: Add course & subject
else:
obj = Documentations.objects.get(id=id)
obj.update(
topic=input.topic,
homework=input.homework,
group_note=input.group_note,
)
return DocumentationCreateOrUpdateMutation(documentation=obj)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment