diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py index 3fc2ce6dada6aa7a19e182ed46f3b331e33d2f8f..75e0e560e796468fe25199b6754d7e82252289fc 100644 --- a/aleksis/apps/chronos/managers.py +++ b/aleksis/apps/chronos/managers.py @@ -5,7 +5,7 @@ from django.db.models import Q from aleksis.apps.cursus.models import Course from aleksis.core.managers import ( - RecurrencePolymorphicQuerySet, + CalendarEventQuerySet, ) from aleksis.core.models import Group, Person, Room @@ -24,7 +24,7 @@ class TimetableType(Enum): return cls.__members__.get(s.upper()) -class LessonEventQuerySet(RecurrencePolymorphicQuerySet): +class LessonEventQuerySet(CalendarEventQuerySet): """Queryset with special query methods for lesson events.""" @staticmethod diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index e3536c222a20ba888b4f190e5419e9e0d9c0a466..c0545a6f3ee0240e8bac52eeb1fb53cbbad11f41 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -27,7 +27,7 @@ from aleksis.apps.cursus import models as cursus_models from aleksis.apps.cursus.models import Course from aleksis.apps.resint.models import LiveDocument from aleksis.core.managers import ( - RecurrencePolymorphicManager, + CalendarEventManager, ) from aleksis.core.mixins import ( GlobalPermissionModel, @@ -169,7 +169,7 @@ class LessonEvent(CalendarEvent): name = "lesson" verbose_name = _("Lessons") - objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)() + objects = CalendarEventManager.from_queryset(LessonEventQuerySet)() title = models.CharField(verbose_name=_("Name"), max_length=255, blank=True) @@ -518,10 +518,18 @@ class LessonEvent(CalendarEvent): if prefetch_absences: prefetch_fields.append("teachers__kolego_absences") + if "start_qs" in kwargs: + start_qs = kwargs.pop("start_qs") + else: + start_qs = cls.objects.not_instance_of(SupervisionEvent) + + if "additional_filter" in kwargs: + q = q & kwargs.pop("additional_filter") + objs = super().get_objects( request, params, - start_qs=cls.objects.not_instance_of(SupervisionEvent), + start_qs=start_qs, additional_filter=q, select_related=["subject", "course"], prefetch_related=prefetch_fields, @@ -759,7 +767,7 @@ class SupervisionEvent(LessonEvent): name = "supervision" verbose_name = _("Supervisions") - objects = RecurrencePolymorphicManager.from_queryset(SupervisionEventQuerySet)() + objects = CalendarEventManager.from_queryset(SupervisionEventQuerySet)() @classmethod def value_title(cls, reference_object: LessonEvent, request: HttpRequest | None = None) -> str: