Skip to content
Snippets Groups Projects

Resolve "Adapt to active school term"

Merged magicfelix requested to merge 319-adapt-to-active-school-term into master
All threads resolved!
4 files
+ 52
45
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -3,6 +3,8 @@ from datetime import datetime
from django.db.models import BooleanField, ExpressionWrapper, Q
import graphene
import graphene_django_optimizer
from guardian.shortcuts import get_objects_for_user
from aleksis.apps.chronos.models import LessonEvent
from aleksis.apps.cursus.models import Course
@@ -21,7 +23,7 @@ from aleksis.core.util.core_helpers import (
)
from ..model_extensions import annotate_person_statistics_for_school_term
from ..models import Documentation, NewPersonalNote, ParticipationStatus
from ..models import Documentation, ExtraMark, NewPersonalNote, ParticipationStatus
from .absences import (
AbsencesForPersonsCreateMutation,
)
@@ -99,6 +101,19 @@ class Query(graphene.ObjectType):
group=graphene.ID(required=True),
)
@staticmethod
def resolve_documentations(root, info, **kwargs):
qs = filter_active_school_term(
info.context,
Documentation.objects.all(),
school_term_field="course__groups__school_term",
)
if not info.context.user.has_perm("alsijil.view_documentation_rule"):
return graphene_django_optimizer.query(
get_objects_for_user(info.context.user, "alsijil.view_documetation_rule", qs), info
)
return graphene_django_optimizer.query(qs, info)
def resolve_documentations_by_course_id(root, info, course_id, **kwargs):
documentations = Documentation.objects.filter(
pk__in=Documentation.objects.filter(course_id=course_id)
@@ -109,7 +124,7 @@ class Query(graphene.ObjectType):
)
)
)
return documentations
return graphene_django_optimizer.query(documentations, info)
def resolve_documentations_for_coursebook(
root,
@@ -169,7+184,7 @@
)
qs = LessonEvent.objects.filter(q)
events = LessonEvent.get_single_events(
datetime.combine(date_start, datetime.min.time()),
datetime.combine(date_end, datetime.max.time()),
info.context,
event_params,
@@ -286,7+301,7 @@
return lessons_for_person
@staticmethod
def resolve_extra_marks(root, info, **kwargs):
if info.context.user.has_perm("alsijil.fetch_extramarks_rule"):
return ExtraMark.objects.all()
raise []
@staticmethod
def resolve_coursebook_absence_reasons(root, info, **kwargs):
if not info.context.user.has_perm("kolego.fetch_absencereasons_rule"):
@@ -298,9 +319,12 @@ class Query(graphene.ObjectType):
if not info.context.user.has_perm("alsijil.view_person_statistics_rule", person):
return None
school_term = get_active_school_term(info.context)
return annotate_person_statistics_for_school_term(
Person.objects.filter(id=person.id), school_term
).first()
return graphene_django_optimizer.query(
annotate_person_statistics_for_school_term(
Person.objects.filter(id=person.id), school_term
).first(),
info,
)
@staticmethod
def resolve_participations_of_person(root, info, person):
@@ -308,12 +332,15 @@ class Query(graphene.ObjectType):
if not info.context.user.has_perm("alsijil.view_person_statistics_rule", person):
return []
school_term = get_active_school_term(info.context)
return ParticipationStatus.objects.filter(
person=person,
absence_reason__isnull=False,
datetime_start__date__gte=school_term.date_start,
datetime_end__date__lte=school_term.date_end,
).order_by("-related_documentation__datetime_start")
return graphene_django_optimizer.query(
ParticipationStatus.objects.filter(
person=person,
absence_reason__isnull=False,
datetime_start__date__gte=school_term.date_start,
datetime_end__date__lte=school_term.date_end,
).order_by("-related_documentation__datetime_start"),
info,
)
@staticmethod
def resolve_personal_notes_for_person(root, info, person):
@@ -321,13 +348,16 @@ class Query(graphene.ObjectType):
if not info.context.user.has_perm("alsijil.view_person_statistics_rule", person):
return []
school_term = get_active_school_term(info.context)
return NewPersonalNote.objects.filter(
person=person,
documentation__in=Documentation.objects.filter(
datetime_start__date__gte=school_term.date_start,
datetime_end__date__lte=school_term.date_end,
),
).order_by("-documentation__datetime_start")
return graphene_django_optimizer.query(
NewPersonalNote.objects.filter(
person=person,
documentation__in=Documentation.objects.filter(
datetime_start__date__gte=school_term.date_start,
datetime_end__date__lte=school_term.date_end,
),
).order_by("-documentation__datetime_start"),
info,
)
@staticmethod
def resolve_statistics_by_group(root, info, group):
@@ -337,7 +367,9 @@ class Query(graphene.ObjectType):
school_term = get_active_school_term(info.context)
members = group.members.all()
return annotate_person_statistics_for_school_term(members, school_term, group=group)
return graphene_django_optimizer.query(
annotate_person_statistics_for_school_term(members, school_term, group=group), info
)
class Mutation(graphene.ObjectType):
Loading