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
2 files
+ 29
6
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -13,7 +13,12 @@ from aleksis.core.models import Group, Person
from aleksis.core.schema.base import FilterOrderList
from aleksis.core.schema.group import GroupType
from aleksis.core.schema.person import PersonType
from aleksis.core.util.core_helpers import get_site_preferences, has_person
from aleksis.core.util.core_helpers import (
filter_active_school_term,
get_active_school_term,
get_site_preferences,
has_person,
)
from ..models import Documentation
from .absences import (
@@ -131,12 +136,16 @@ class Query(graphene.ObjectType):
}
)
school_term = get_active_school_term(info.context)
q = Q(groups__school_term=school_term, course__groups__school_term=school_term)
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,
with_reference_object=True,
queryset=qs,
)
# Lookup or create documentations and return them all.
@@ -161,8 +170,10 @@ class Query(graphene.ObjectType):
else:
return []
school_term = get_active_school_term(info.context)
return (
Group.objects.for_current_school_term_or_all()
Group.objects.for_school_term(school_term)
.filter(
pk__in=Group.objects.filter(members=person)
.values_list("id", flat=True)
.union(Group.objects.filter(owners=person).values_list("id", flat=True))
.union(
Group.objects.filter(parent_groups__owners=person).values_list("id", flat=True)
)
)
.annotate(
is_priority=ExpressionWrapper(
@@ -190,7+201,7 @@
person = info.context.user.person
else:
return []
school_term = get_active_school_term(info.context)
return Course.objects.filter(
pk__in=(
Course.objects.filter(teachers=person)
@@ -202,20 +216,22 @@ class Query(graphene.ObjectType):
)
)
)
).filter(groups__in=Group.objects.for_current_school_term_or_all())
).filter(groups__in=Group.objects.for_school_term(school_term))
@staticmethod
def resolve_absence_creation_persons(root, info, **kwargs):
if not info.context.user.has_perm("alsijil.register_absence"):
group_types = get_site_preferences()["alsijil__group_types_register_absence"]
school_term = get_active_school_term(info.context)
if group_types:
return Person.objects.filter(
member_of__in=Group.objects.filter(
member_of__in=Group.objects.for_school_term(school_term).filter(
owners=info.context.user.person, group_type__in=group_types
)
)
else:
return Person.objects.filter(member_of__owners=info.context.user.person)
qs = Person.objects.filter(member_of__owners=info.context.user.person)
return filter_active_school_term(info.context, qs, "member_of__school_term")
return Person.objects.all()
@staticmethod
Loading