diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py index 2ba38ff0711f341a242785bf3e9521f470d6d3d3..45aecf55b7553f0bd61c74cc4fee19e65f05b8d9 100644 --- a/aleksis/apps/chronos/managers.py +++ b/aleksis/apps/chronos/managers.py @@ -9,13 +9,13 @@ from django.db.models.fields import DateField from django.db.models.functions import Concat from calendarweek import CalendarWeek -from polymorphic.managers import PolymorphicQuerySet 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 ( AlekSISBaseManagerWithoutMigrations, DateRangeQuerySetMixin, + RecurrencePolymorphicQuerySet, SchoolTermRelatedQuerySet, ) from aleksis.core.models import Group, Person, Room @@ -866,7 +866,7 @@ class RoomPropertiesMixin: return sep.join([room.short_name for room in self.get_rooms()]) -class LessonEventQuerySet(PolymorphicQuerySet): +class LessonEventQuerySet(RecurrencePolymorphicQuerySet): """Queryset with special query methods for lesson events.""" def for_teacher(self, teacher: Union[int, Person]) -> "LessonEventQuerySet": diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index 732c95d53a22ecdb3764b4f71bf55a5b3aa6e410..187e0d6d7ef61eb63cd7b641a90bc1f687ae8067 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -59,7 +59,10 @@ from aleksis.apps.chronos.util.format import format_m2m 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 AlekSISBaseManagerWithoutMigrations, PolymorphicBaseManager +from aleksis.core.managers import ( + AlekSISBaseManagerWithoutMigrations, + RecurrencePolymorphicManager, +) from aleksis.core.mixins import ( ExtensibleModel, GlobalPermissionModel, @@ -1290,7 +1293,7 @@ class LessonEvent(CalendarEvent): name = "lesson" verbose_name = _("Lessons") - objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)() + objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)() title = models.CharField(verbose_name=_("Name"), max_length=255, blank=True) @@ -1525,12 +1528,12 @@ class LessonEvent(CalendarEvent): @classmethod def get_objects( - cls, request: HttpRequest | None = None, params: dict[str, any] | None = None + cls, request: HttpRequest | None = None, params: dict[str, any] | None = None, **kwargs ) -> Iterable: """Return all objects that should be included in the calendar.""" objs = ( super() - .get_objects(request, params) + .get_objects(request, params, **kwargs) .not_instance_of(SupervisionEvent) .select_related("subject", "course") .prefetch_related("groups", "teachers", "rooms", "groups__members") @@ -1587,7 +1590,7 @@ class SupervisionEvent(LessonEvent): name = "supervision" verbose_name = _("Supervisions") - objects = PolymorphicBaseManager.from_queryset(LessonEventQuerySet)() + objects = RecurrencePolymorphicManager.from_queryset(LessonEventQuerySet)() @classmethod def value_title(cls, reference_object: LessonEvent, request: HttpRequest | None = None) -> str: @@ -1609,10 +1612,10 @@ class SupervisionEvent(LessonEvent): @classmethod def get_objects( - cls, request: HttpRequest | None = None, params: dict[str, any] | None = None + cls, request: HttpRequest | None = None, params: dict[str, any] | None = None, **kwargs ) -> Iterable: """Return all objects that should be included in the calendar.""" - objs = cls.objects.instance_of(cls) + objs = super().get_objects(request, params, **kwargs).instance_of(cls) if params: obj_id = int(params.get("id", 0)) type_ = params.get("type", None)