Skip to content
Snippets Groups Projects
Verified Commit 7f207764 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Fix for recurrence optimizations

parent 9c982ca5
No related branches found
No related tags found
1 merge request!358Fix for recurrence optimizations
Pipeline #191796 failed
......@@ -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":
......
......@@ -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)
......
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