diff --git a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql index f2575f091febcacc9d4ebf679d58a66740770c69..22f8b1300435a3751260b05527e7cb392bcb24c9 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 57e0344c42563ea111a403820341b51e10fda28a..51902b05ffce0b7947f8db4a1f361e4cae771178 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 5056fc1b3f83c0881c3f1a794f25a8d5ba6ca8a5..86c1b0ac0f530b83cb1aa68d6908dc2b537c9c97 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 63cc90717ef4383e78424a4ba99ab20ec1d67a96..e09159f5be8a4dfeaea6c0818a0320a04e6eb107 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()