From 7630e7137b9dbe14f911ea1284c10d914266565d Mon Sep 17 00:00:00 2001 From: magicfelix <felix@felix-zauberer.de> Date: Thu, 28 Jul 2022 18:37:46 +0200 Subject: [PATCH] Make LessonDocumentation able to update or create --- .../components/alsijil/CourseBook.graphql | 11 ++++ .../assets/components/alsijil/CourseBook.vue | 5 ++ .../components/alsijil/LessonDocumentation.js | 5 ++ aleksis/apps/alsijil/schema.py | 60 +++++++++++++++++-- 4 files changed, 76 insertions(+), 5 deletions(-) diff --git a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql index f2575f091..22f8b1300 100644 --- a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql +++ b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql @@ -32,6 +32,17 @@ query CourseBook($lessonId: ID!) { topic homework groupNote + year + week + lessonPeriod { + id + } + event { + id + } + extraLesson { + id + } period date personalNotes { diff --git a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue index 57e0344c4..51902b05f 100644 --- a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue +++ b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue @@ -28,6 +28,11 @@ <lesson-documentation v-bind:key="item.id" :id="item.id" + :year="item.year" + :week="item.week" + :lessonPeriod="item.lessonPeriod" + :event="item.event" + :extraLesson="item.extraLesson" :groups="data.lesson.groups" :excuse-types="data.excuseTypes" :extra-marks="data.extraMarks" diff --git a/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentation.js b/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentation.js index 5056fc1b3..86c1b0ac0 100644 --- a/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentation.js +++ b/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentation.js @@ -6,6 +6,11 @@ export default { }, props: [ "id", + "year", + "week", + "lessonPeriod", + "event", + "extraLesson", "date", "period", "topic", diff --git a/aleksis/apps/alsijil/schema.py b/aleksis/apps/alsijil/schema.py index 63cc90717..e09159f5b 100644 --- a/aleksis/apps/alsijil/schema.py +++ b/aleksis/apps/alsijil/schema.py @@ -5,7 +5,7 @@ from graphene_django.forms.mutation import DjangoModelFormMutation from aleksis.apps.chronos.models import LessonPeriod from aleksis.core.models import Person, Group from .forms import LessonDocumentationForm -from .models import ExcuseType, LessonDocumentation, PersonalNote, ExtraMark +from .models import Event, ExcuseType, ExtraLesson, LessonDocumentation, LessonPeriod, PersonalNote, ExtraMark class ExcuseTypeType(DjangoObjectType): @@ -51,11 +51,61 @@ class ExtraMarkType(DjangoObjectType): model = ExtraMark -class LessonDocumentationMutation(DjangoModelFormMutation): +class LessonDocumentationMutation(graphene.Mutation): + class Arguments: + year = graphene.Int(required=True) + week = graphene.Int(required=True) + + lesson_period_id = graphene.ID(required=False) + event_id = graphene.ID(required=False) + extra_lesson_id = graphene.ID(required=False) + + lesson_documentation_id = graphene.ID(required=False) + + topic = graphene.String(required=False) + homework = graphene.String(required=False) + group_note = graphene.String(required=False) + lesson_documentation = graphene.Field(LessonDocumentationType) - class Meta: - form_class = LessonDocumentationForm + @classmethod + def mutate( + cls, + root, + info, + year, + week, + lesson_period_id=None, + event_id=None, + extra_lesson_id=None, + lesson_documentation_id=None, + topic=None, + homework=None, + group_note=None + ): + + lesson_period = LessonPeriod.objects.filter(pk=lesson_period_id).first() + event = Event.objects.filter(pk=event_id).first() + extra_lesson = ExtraLesson.objects.filter(pk=extra_lesson_id).first() + + lesson_documentation, created = LessonDocumentation.objects.get_or_create( + year=year, + week=week, + lesson_period=lesson_period, + event=event, + extra_lesson=extra_lesson + ) + + if topic: + lesson_documentation.topic = topic + if homework: + lesson_documentation.homework = homework + if group_note: + lesson_documentation.group_note = group_note + + lesson_documentation.save() + + return LessonDocumentationMutation(lesson_documentation=lesson_documentation) class PersonalNoteMutation(graphene.Mutation): @@ -124,7 +174,7 @@ class PersonalNoteMutation(graphene.Mutation): class Mutation(graphene.ObjectType): - update_lesson_documentation = LessonDocumentationMutation.Field() + update_or_create_lesson_documentation = LessonDocumentationMutation.Field() update_or_create_personal_note = PersonalNoteMutation.Field() # update_personal_note = PersonalNoteMutation.Field() -- GitLab