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 ( ...@@ -10,6 +10,7 @@ from .documentation import (
DocumentationBatchCreateMutation, DocumentationBatchCreateMutation,
DocumentationBatchPatchMutation, DocumentationBatchPatchMutation,
DocumentationCreateMutation, DocumentationCreateMutation,
DocumentationCreateOrUpdateMutation,
DocumentationDeleteMutation, DocumentationDeleteMutation,
DocumentationType, DocumentationType,
) )
...@@ -46,3 +47,5 @@ class Mutation(graphene.ObjectType): ...@@ -46,3 +47,5 @@ class Mutation(graphene.ObjectType):
create_documentations = DocumentationBatchCreateMutation.Field() create_documentations = DocumentationBatchCreateMutation.Field()
delete_documentation = DocumentationDeleteMutation.Field() delete_documentation = DocumentationDeleteMutation.Field()
update_documentations = DocumentationBatchPatchMutation.Field() update_documentations = DocumentationBatchPatchMutation.Field()
create_or_update_documentation = DocumentationCreateOrUpdateMutation.Field()
import graphene
from graphene_django.types import DjangoObjectType from graphene_django.types import DjangoObjectType
from graphene_django_cud.mutations import ( from graphene_django_cud.mutations import (
DjangoBatchCreateMutation, DjangoBatchCreateMutation,
...@@ -6,13 +7,13 @@ from graphene_django_cud.mutations import ( ...@@ -6,13 +7,13 @@ from graphene_django_cud.mutations import (
) )
from guardian.shortcuts import get_objects_for_user from guardian.shortcuts import get_objects_for_user
from aleksis.apps.chronos.models import LessonEvent
from aleksis.core.schema.base import ( from aleksis.core.schema.base import (
DeleteMutation, DeleteMutation,
DjangoFilterMixin, DjangoFilterMixin,
PermissionBatchPatchMixin, PermissionBatchPatchMixin,
PermissionsTypeMixin, PermissionsTypeMixin,
) )
from ..models import Documentation from ..models import Documentation
...@@ -113,3 +114,44 @@ class DocumentationBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatc ...@@ -113,3 +114,44 @@ class DocumentationBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatc
"date_end", "date_end",
) )
permissions = ("alsijil.edit_documentation_rule",) # FIXME 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