diff --git a/aleksis/apps/alsijil/schema.py b/aleksis/apps/alsijil/schema.py index 8ee25fb4286b2b49b82f042b54190630c9de2893..f18f23e3950cf191ed60aef2a70f0e805834ce02 100644 --- a/aleksis/apps/alsijil/schema.py +++ b/aleksis/apps/alsijil/schema.py @@ -2,25 +2,48 @@ import graphene from graphene_django import DjangoObjectType 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 -# print([ExcuseType, LessonDocumentation, PersonalNote, ExtraMark]) - class ExcuseTypeType(DjangoObjectType): class Meta: model = ExcuseType +class PersonalNoteType(DjangoObjectType): + class Meta: + model = PersonalNote + + class LessonDocumentationType(DjangoObjectType): class Meta: model = LessonDocumentation + personal_notes = graphene.List(PersonalNoteType) + date = graphene.Field(graphene.Date) + period = graphene.Field(graphene.Int) -class PersonalNoteType(DjangoObjectType): - class Meta: - model = PersonalNote + def resolve_personal_notes(root: LessonDocumentation, info, **kwargs): + persons = Person.objects.filter( + member_of__in=Group.objects.filter( + pk__in=root.register_object.get_groups().all() + ) + ) + return PersonalNote.objects.filter( + week=root.week, + year=root.year, + lesson_period=root.lesson_period, + person__in=persons, + ) + + def resolve_period(root: LessonDocumentation, info, **kwargs): + return root.period.period + + def resolve_date(root: LessonDocumentation, info, **kwargs): + return root.date class ExtraMarkType(DjangoObjectType): @@ -38,17 +61,30 @@ class LessonDocumentationMutation(DjangoModelFormMutation): class Query(graphene.ObjectType): excuse_types = graphene.List(ExcuseTypeType) lesson_documentations = graphene.List(LessonDocumentationType) + lesson_documentations_by_lesson_id = graphene.List(LessonDocumentationType, id=graphene.ID()) personal_notes = graphene.List(PersonalNoteType) extra_marks = graphene.List(ExtraMarkType) def resolve_excuse_types(root, info, **kwargs): # FIXME do permission stuff - print(ExcuseType.objects.all()) return ExcuseType.objects.all() def resolve_lesson_documentations(root, info, **kwargs): # FIXME do permission stuff - return LessonDocumentation.objects.all() + return LessonDocumentation.objects.all().order_by("-year", "-week", "-lesson_period__period__weekday", + "-lesson_period__period__period") + + def resolve_lesson_documentations_by_lesson_id(root, info, id, **kwargs): + return LessonDocumentation.objects.filter( + lesson_period_id__in=LessonPeriod.objects.filter( + lesson_id=id + ).values_list("id", flat=True) + ).order_by( + "-year", + "-week", + "-lesson_period__period__weekday", + "-lesson_period__period__period" + ) def resolve_personal_notes(root, info, **kwargs): # FIXME do permission stuff @@ -56,6 +92,3 @@ class Query(graphene.ObjectType): def resolve_extra_marks(root, info, **kwargs): return ExtraMark.objects.all() - -# print("Hello2") -# schema = graphene.Schema(query=Query)