From 4fe76e9975034d3703c8c5829aadab4f21446892 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Tue, 16 Feb 2021 16:35:05 +0100
Subject: [PATCH] Fix type hints and add missing doc strings for improved API
 on ExtraLesson/Event/LessonPeriod

---
 aleksis/apps/chronos/managers.py |  2 +-
 aleksis/apps/chronos/models.py   | 34 +++++++++++++++++++++++++++-----
 2 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py
index fa34cc6a..8955a3f7 100644
--- a/aleksis/apps/chronos/managers.py
+++ b/aleksis/apps/chronos/managers.py
@@ -702,5 +702,5 @@ class TeacherPropertiesMixin:
         return sep.join([teacher.full_name for teacher in self.get_teachers().all()])
 
     @property
-    def teacher_short_names(self, sep: Optional[str] = ", ") -> str:
+    def teacher_short_names(self, sep: str = ", ") -> str:
         return sep.join([teacher.short_name for teacher in self.get_teachers().all()])
diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index f0ea8491..24f8e855 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -218,7 +218,7 @@ class TimePeriod(ValidityRangeRelatedExtensibleModel):
         return url_prev, url_next
 
     @classmethod
-    def get_from_period(cls, period: int, day: date):
+    def get_from_period(cls, period: int, day: date) -> "TimePeriod":
         return cls.objects.on_day(day).filter(period=period).first()
 
     @classproperty
@@ -348,7 +348,8 @@ class Lesson(ValidityRangeRelatedExtensibleModel, GroupPropertiesMixin, TeacherP
 
         return CalendarWeek(year=year, week=week)
 
-    def get_teachers(self):
+    def get_teachers(self) -> models.query.QuerySet:
+        """Get teachers relation."""
         return self.teachers
 
     def __str__(self):
@@ -900,6 +901,10 @@ class Event(SchoolTermRelatedExtensibleModel, GroupPropertiesMixin, TeacherPrope
 
     @property
     def raw_period_from_on_day(self) -> TimePeriod:
+        """Get start period on the annotated day (as TimePeriod object).
+
+        If there is no date annotated, it will use the current date.
+        """
         day = getattr(self, "_date", timezone.now().date())
         if day != self.date_start:
             return TimePeriod.get_from_period(TimePeriod.period_min, day)
@@ -908,6 +913,10 @@ class Event(SchoolTermRelatedExtensibleModel, GroupPropertiesMixin, TeacherPrope
 
     @property
     def raw_period_to_on_day(self) -> TimePeriod:
+        """Get end period on the annotated day (as TimePeriod object).
+
+        If there is no date annotated, it will use the current date.
+        """
         day = getattr(self, "_date", timezone.now().date())
         if day != self.date_end:
             return TimePeriod.get_from_period(TimePeriod.period_max, day)
@@ -916,19 +925,29 @@ class Event(SchoolTermRelatedExtensibleModel, GroupPropertiesMixin, TeacherPrope
 
     @property
     def period_from_on_day(self) -> int:
+        """Get start period on the annotated day (as period number).
+
+        If there is no date annotated, it will use the current date.
+        """
         return self.raw_period_from_on_day.period
 
     @property
     def period_to_on_day(self) -> int:
+        """Get end period on the annotated day (as period number).
+
+        If there is no date annotated, it will use the current date.
+        """
         return self.raw_period_to_on_day.period
 
-    def get_start_weekday(self, week) -> int:
+    def get_start_weekday(self, week: CalendarWeek) -> int:
+        """Get start date of an event in a specific week."""
         if self.date_start < week[TimePeriod.weekday_min]:
             return TimePeriod.weekday_min
         else:
             return self.date_start.weekday()
 
-    def get_end_weekday(self, week) -> int:
+    def get_end_weekday(self, week: CalendarWeek) -> int:
+        """Get end date of an event in a specific week."""
         if self.date_end > week[TimePeriod.weekday_max]:
             return TimePeriod.weekday_max
         else:
@@ -939,9 +958,11 @@ class Event(SchoolTermRelatedExtensibleModel, GroupPropertiesMixin, TeacherPrope
         self._date = day
 
     def get_groups(self) -> models.query.QuerySet:
+        """Get groups relation."""
         return self.groups
 
     def get_teachers(self) -> models.query.QuerySet:
+        """Get teachers relation."""
         return self.teachers
 
     class Meta:
@@ -986,12 +1007,15 @@ class ExtraLesson(
         return f"{self.week}, {self.period}, {self.subject}"
 
     def get_groups(self) -> models.query.QuerySet:
+        """Get groups relation."""
         return self.groups
 
     def get_teachers(self) -> models.query.QuerySet:
+        """Get teachers relation."""
         return self.teachers
 
-    def get_subject(self) -> models.query.QuerySet:
+    def get_subject(self) -> Subject:
+        """Get subject."""
         return self.subject
 
     class Meta:
-- 
GitLab