Skip to content
Snippets Groups Projects
Commit 8c8cb592 authored by Hangzhi Yu's avatar Hangzhi Yu
Browse files

Merge branch 'new-model-based-on-calendar' into...

Merge branch 'new-model-based-on-calendar' into 225-introduce-substitution-to-do-list-generated-from-teachers-absences
parents fa84c9d8 750ff75a
No related branches found
No related tags found
1 merge request!329Introduce substitution to do list
Pipeline #170439 failed
...@@ -12,6 +12,7 @@ from calendarweek import CalendarWeek ...@@ -12,6 +12,7 @@ from calendarweek import CalendarWeek
from polymorphic.managers import PolymorphicQuerySet from polymorphic.managers import PolymorphicQuerySet
from aleksis.apps.chronos.util.date import week_weekday_from_date, week_weekday_to_date from aleksis.apps.chronos.util.date import week_weekday_from_date, week_weekday_to_date
from aleksis.apps.cursus.models import Course
from aleksis.core.managers import ( from aleksis.core.managers import (
AlekSISBaseManagerWithoutMigrations, AlekSISBaseManagerWithoutMigrations,
DateRangeQuerySetMixin, DateRangeQuerySetMixin,
...@@ -888,6 +889,12 @@ class LessonEventQuerySet(PolymorphicQuerySet): ...@@ -888,6 +889,12 @@ class LessonEventQuerySet(PolymorphicQuerySet):
) )
return self.filter(Q(rooms=room) | Q(pk__in=amended)).distinct() return self.filter(Q(rooms=room) | Q(pk__in=amended)).distinct()
def for_course(self, course: Union[int, Course]):
amended = self.filter(Q(amended_by__isnull=False) & (Q(course=course))).values_list(
"amended_by__pk", flat=True
)
return self.filter(Q(course=course) | Q(pk__in=amended)).distinct()
def for_person(self, person: Union[int, Person]): def for_person(self, person: Union[int, Person]):
amended = self.filter( amended = self.filter(
Q(amended_by__isnull=False) & (Q(teachers=person) | Q(groups__members=person)) Q(amended_by__isnull=False) & (Q(teachers=person) | Q(groups__members=person))
...@@ -908,3 +915,9 @@ class LessonEventQuerySet(PolymorphicQuerySet): ...@@ -908,3 +915,9 @@ class LessonEventQuerySet(PolymorphicQuerySet):
& Q(amends__isnull=True) & Q(amends__isnull=True)
& Q(amended_by__isnull=True) & Q(amended_by__isnull=True)
) )
def not_amended(self):
return self.filter(amended_by__isnull=True)
def not_amending(self):
return self.filter(amends__isnull=True)
...@@ -1544,10 +1544,18 @@ class LessonEvent(CalendarEvent): ...@@ -1544,10 +1544,18 @@ class LessonEvent(CalendarEvent):
obj_id = int(params.get("id", 0)) obj_id = int(params.get("id", 0))
type_ = params.get("type", None) type_ = params.get("type", None)
prefetch_absences = params.get("prefetch_absences", False) prefetch_absences = params.get("prefetch_absences", False)
not_amended = params.get("not_amended", False)
not_amending = params.get("not_amending", False)
if prefetch_absences: if prefetch_absences:
objs = objs.prefetch_related("teachers__kolego_absences") objs = objs.prefetch_related("teachers__kolego_absences")
if not_amended:
objs = objs.not_amended()
if not_amending:
objs = objs.not_amending()
if type_ and obj_id: if type_ and obj_id:
if type_ == "TEACHER": if type_ == "TEACHER":
return objs.for_teacher(obj_id) return objs.for_teacher(obj_id)
...@@ -1555,6 +1563,8 @@ class LessonEvent(CalendarEvent): ...@@ -1555,6 +1563,8 @@ class LessonEvent(CalendarEvent):
return objs.for_group(obj_id) return objs.for_group(obj_id)
elif type_ == "ROOM": elif type_ == "ROOM":
return objs.for_room(obj_id) return objs.for_room(obj_id)
elif type_ == "COURSE":
return objs.for_course(obj_id)
return objs.for_person(request.user.person) return objs.for_person(request.user.person)
@classmethod @classmethod
......
...@@ -173,6 +173,17 @@ class TimetableObjectType(graphene.ObjectType): ...@@ -173,6 +173,17 @@ class TimetableObjectType(graphene.ObjectType):
return f"{root.type.value}-{root.id}" return f"{root.type.value}-{root.id}"
class LessonEventType(DjangoObjectType):
class Meta:
model = LessonEvent
fields = (
"id",
)
filter_fields = {
"id": ["exact", "lte", "gte"],
}
class Query(graphene.ObjectType): class Query(graphene.ObjectType):
timetable_teachers = graphene.List(TimetablePersonType) timetable_teachers = graphene.List(TimetablePersonType)
timetable_groups = graphene.List(TimetableGroupType) timetable_groups = graphene.List(TimetableGroupType)
......
...@@ -3,4 +3,4 @@ ...@@ -3,4 +3,4 @@
{% trans "Teachers" %}: {{ event.teacher_names_with_amends|default:"–" }} {% trans "Teachers" %}: {{ event.teacher_names_with_amends|default:"–" }}
{% trans "Rooms" %}: {{ event.room_names_with_amends|default:"–" }}{% if event.comment %} {% trans "Rooms" %}: {{ event.room_names_with_amends|default:"–" }}{% if event.comment %}
{{ event.comment }}{% endif %} {{ event.comment }}{% endif %}
\ No newline at end of file
{% load i18n %}{% trans "Teachers" %}: {{ event.teacher_names }} {% load i18n %}{% trans "Teachers" %}: {{ event.teacher_names }}
{% trans "Areas" %}: {{ event.room_names }} {% trans "Areas" %}: {{ event.room_names }}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment