Skip to content
Snippets Groups Projects
Verified Commit 4c18f7ec authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Introduce ModelManager for LessonPeriod. Advances #33.

parent 3f6a6994
No related branches found
No related tags found
No related merge requests found
......@@ -12,6 +12,19 @@ from biscuit.core.mixins import SchoolRelated
from .util import CalendarWeek
class LessonPeriodManager(models.Manager):
''' Manager adding specific methods to lesson periods. '''
def get_queryset(self):
''' Ensures all related lesson data is loaded as well. '''
return super().get_queryset().select_related(
'lesson', 'lesson__subject', 'period', 'room'
).prefetch_related(
'lesson__groups', 'lesson__teachers', 'substitutions'
)
class TimePeriod(SchoolRelated):
WEEKDAY_CHOICES = [
(0, _('Sunday')),
......@@ -147,6 +160,8 @@ class LessonSubstitution(SchoolRelated):
class LessonPeriod(SchoolRelated):
objects = LessonPeriodManager()
lesson = models.ForeignKey('Lesson', models.CASCADE, related_name='lesson_periods')
period = models.ForeignKey('TimePeriod', models.CASCADE, related_name='lesson_periods')
......
......@@ -33,10 +33,6 @@ def timetable(request: HttpRequest, year: Optional[int] = None, week: Optional[i
lesson_periods = LessonPeriod.objects.filter(
lesson__date_start__lte=wanted_week[0] + timedelta(days=1) * (F('period__weekday') - 1),
lesson__date_end__gte=wanted_week[0] + timedelta(days=1) * (F('period__weekday') - 1)
).select_related(
'lesson', 'lesson__subject', 'period', 'room'
).prefetch_related(
'lesson__groups', 'lesson__teachers', 'substitutions'
).extra(
select={'_week': wanted_week.week}
)
......
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