Skip to content
Snippets Groups Projects

Add helper methods for getting next/previous lesson of a person on a day

Merged Jonathan Weth requested to merge feature/helper-next-prev-lesson-of-person into master
All threads resolved!
1 file
+ 33
0
Compare changes
  • Side-by-side
  • Inline
from datetime import date
from typing import Optional, Union
from django.utils.translation import gettext_lazy as _
@@ -79,6 +80,38 @@ def lesson_periods_as_teacher(self):
return LessonPeriod.objects.filter(lesson__teachers=self)
@Person.method
def daily_lessons(self, day: date):
"""Get all lessons of this person on the given day."""
return LessonPeriod.objects.on_day(day).filter_from_person(self)
@Person.method
def next_lesson(self, lesson_period: "LessonPeriod", day: date) -> Union["LessonPeriod", None]:
"""Get next lesson of the person on the same day."""
daily_lessons = self.daily_lessons(day)
ids = list(daily_lessons.values_list("id", flat=True))
index = ids.index(lesson_period.pk)
if index + 1 < len(ids):
return daily_lessons[index + 1]
else:
return None
@Person.method
def previous_lesson(self, lesson_period: "LessonPeriod", day: date) -> Union["LessonPeriod", None]:
"""Get previous lesson of the person on the same day."""
daily_lessons = self.daily_lessons(day)
ids = list(daily_lessons.values_list("id", flat=True))
index = ids.index(lesson_period.pk)
if index > 0:
return daily_lessons[index - 1]
else:
return None
def for_timetables(cls):
"""Return all announcements that should be shown in timetable views."""
return cls.objects.filter(show_in_timetables=True)
Loading