diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index 986256eba7d6d3a6ff068d8ce7c544d15a8ec864..14725b342e721e5e9ddc79eda43c774adb789f98 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -22,7 +22,10 @@ from .absences import ( LessonsForPersonType, AbsencesBatchCreateMutation, ) -from .statistics import StatisticsByPersonType +from .statistics import ( + StatisticsByPersonType, + DocumentationByPersonType, +) class Query(graphene.ObjectType): documentations = FilterOrderList(DocumentationType) @@ -54,6 +57,11 @@ class Query(graphene.ObjectType): person=graphene.ID(required=True), term=graphene.ID(required=False), ) + documentations_by_person = graphene.List( + DocumentationByPersonType, + person=graphene.ID(required=True), + term=graphene.ID(required=False), + ) statistics_by_group = graphene.List( StatisticsByPersonType, group=graphene.ID(required=True), @@ -187,6 +195,11 @@ class Query(graphene.ObjectType): # TODO: Annotate person with necessary information for term. return Person.objects.get(id=person) + @staticmethod + def resolve_documentations_by_person(root, info, person, term=None): + # TODO: Annotate person with necessary information for term. + return Person.objects.get(id=person) + @staticmethod def resolve_statistics_by_group(root, info, group, term=None): # TODO: Annotate persons with necessary information for term. diff --git a/aleksis/apps/alsijil/schema/statistics.py b/aleksis/apps/alsijil/schema/statistics.py index 4b030735c8c73b063b3f6fcc5d19a27f32d53c5c..070379d1b893a1048f3b716b8de1514539e00eb6 100644 --- a/aleksis/apps/alsijil/schema/statistics.py +++ b/aleksis/apps/alsijil/schema/statistics.py @@ -1,4 +1,7 @@ import graphene +from aleksis.core.models import Person +from aleksis.core.schema.person import PersonType +from aleksis.apps.cursus.schema import SubjectType from aleksis.apps.kolego.models.absence import AbsenceReason from aleksis.apps.kolego.schema.absence import AbsenceReasonType from ..models import ExtraMark @@ -58,3 +61,42 @@ class StatisticsByPersonType(graphene.ObjectType): def resolve_extra_marks(root, info): # TODO: Return actual ExtraMarks return ExtraMark.objects.all() + + +class DocumentationByPersonType(graphene.ObjectType): + id = graphene.ID() + datetime_start = graphene.Date() + datetime_end = graphene.Date() + group_short_name = graphene.String() + teacher = graphene.Field(PersonType) + subject = graphene.Field(SubjectType) + absences = graphene.List(AbsenceReasonType) + extra_marks = graphene.List(ExtraMarkType) + personal_note = graphene.String() + + def resolve_id(root, info): + return 1 + + def resolve_datetime_start(root, info): + return "2024-05-27T09:00:00+00:00" + + def resolve_datetime_end(root, info): + return "2024-05-27T10:00:00+00:00" + + def resolve_group_short_name(root, info): + return "11b" + + def resolve_teacher(root, info): + return Person.objects.get(id=63) + + def resolve_subject(root, info): + return Subject.objects.get(id=1) + + def resolve_absences(root, info): + return AbsenceReason.objects.all() + + def resolve_extra_marks(root, info): + return ExtraMark.objects.all() + + def resolve_personal_note(root, info): + return "All is well:)"