From 9ee4be88507195df87d38e13a4a80b12cfde0c7a Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Sun, 3 May 2020 19:31:34 +0200 Subject: [PATCH] [Reformat] black --- aleksis/apps/chronos/forms.py | 4 +- aleksis/apps/chronos/managers.py | 42 ++---- aleksis/apps/chronos/model_extensions.py | 4 +- aleksis/apps/chronos/models.py | 164 +++++------------------ aleksis/apps/chronos/preferences.py | 4 +- aleksis/apps/chronos/rules.py | 4 +- aleksis/apps/chronos/tables.py | 8 +- aleksis/apps/chronos/urls.py | 13 +- aleksis/apps/chronos/util/build.py | 52 ++----- aleksis/apps/chronos/views.py | 37 ++--- 10 files changed, 79 insertions(+), 253 deletions(-) diff --git a/aleksis/apps/chronos/forms.py b/aleksis/apps/chronos/forms.py index 0e676e2f..ab31b103 100644 --- a/aleksis/apps/chronos/forms.py +++ b/aleksis/apps/chronos/forms.py @@ -24,6 +24,4 @@ class LessonSubstitutionForm(forms.ModelForm): } -AnnouncementForm.add_node_to_layout( - Fieldset(_("Options for timetables"), "show_in_timetables") -) +AnnouncementForm.add_node_to_layout(Fieldset(_("Options for timetables"), "show_in_timetables")) diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py index 180640b5..d20e622e 100644 --- a/aleksis/apps/chronos/managers.py +++ b/aleksis/apps/chronos/managers.py @@ -116,10 +116,8 @@ class LessonDataQuerySet(models.QuerySet, WeekQuerySetMixin): """ Filter for all lessons within a calendar week. """ return self.within_dates( - wanted_week[0] - + timedelta(days=1) * (F(self._period_path + "period__weekday") - 1), - wanted_week[0] - + timedelta(days=1) * (F(self._period_path + "period__weekday") - 1), + wanted_week[0] + timedelta(days=1) * (F(self._period_path + "period__weekday") - 1), + wanted_week[0] + timedelta(days=1) * (F(self._period_path + "period__weekday") - 1), ).annotate_week(wanted_week) def on_day(self, day: date): @@ -154,9 +152,7 @@ class LessonDataQuerySet(models.QuerySet, WeekQuerySetMixin): return self.filter( Q(**{self._period_path + "lesson__groups__members": person}) - | Q( - **{self._period_path + "lesson__groups__parent_groups__members": person} - ) + | Q(**{self._period_path + "lesson__groups__parent_groups__members": person}) ) def filter_group(self, group: Union[Group, int]): @@ -179,10 +175,7 @@ class LessonDataQuerySet(models.QuerySet, WeekQuerySetMixin): qs1 = self.filter(**{self._period_path + "lesson__teachers": teacher}) qs2 = self.filter( - **{ - self._subst_path + "teachers": teacher, - self._subst_path + "week": F("_week"), - } + **{self._subst_path + "teachers": teacher, self._subst_path + "week": F("_week"),} ) return qs1.union(qs2) @@ -197,9 +190,7 @@ class LessonDataQuerySet(models.QuerySet, WeekQuerySetMixin): return qs1.union(qs2) - def filter_from_type( - self, type_: TimetableType, pk: int - ) -> Optional[models.QuerySet]: + def filter_from_type(self, type_: TimetableType, pk: int) -> Optional[models.QuerySet]: """Filter lesson data for a group, teacher or room by provided type.""" if type_ == TimetableType.GROUP: @@ -242,9 +233,7 @@ class LessonDataQuerySet(models.QuerySet, WeekQuerySetMixin): return lesson_periods - def next( - self, reference: "LessonPeriod", offset: Optional[int] = 1 - ) -> "LessonPeriod": + def next(self, reference: "LessonPeriod", offset: Optional[int] = 1) -> "LessonPeriod": """ Get another lesson in an ordered set of lessons. By default, it returns the next lesson in the set. By passing the offset argument, @@ -287,8 +276,7 @@ class LessonSubstitutionQuerySet(LessonDataQuerySet): """ Return all teachers which are affected by selected substitutions (as substituted or substituting) """ return Person.objects.filter( - Q(lessons_as_teacher__in=self.affected_lessons()) - | Q(lesson_substitutions__in=self) + Q(lessons_as_teacher__in=self.affected_lessons()) | Q(lesson_substitutions__in=self) ).annotate(lessons_count=Count("lessons_as_teacher")) def affected_groups(self): @@ -334,19 +322,13 @@ class AbsenceQuerySet(DateRangeQuerySet): """QuerySet with custom query methods for absences.""" def absent_teachers(self): - return Person.objects.filter(absences__in=self).annotate( - absences_count=Count("absences") - ) + return Person.objects.filter(absences__in=self).annotate(absences_count=Count("absences")) def absent_groups(self): - return Group.objects.filter(absences__in=self).annotate( - absences_count=Count("absences") - ) + return Group.objects.filter(absences__in=self).annotate(absences_count=Count("absences")) def absent_rooms(self): - return Person.objects.filter(absences__in=self).annotate( - absences_count=Count("absences") - ) + return Person.objects.filter(absences__in=self).annotate(absences_count=Count("absences")) class HolidayQuerySet(DateRangeQuerySet): @@ -426,9 +408,7 @@ class TimetableQuerySet(models.QuerySet): else: return self.filter(room=room) - def filter_from_type( - self, type_: TimetableType, pk: int - ) -> Optional[models.QuerySet]: + def filter_from_type(self, type_: TimetableType, pk: int) -> Optional[models.QuerySet]: """Filter data for a group, teacher or room by provided type.""" if type_ == TimetableType.GROUP: diff --git a/aleksis/apps/chronos/model_extensions.py b/aleksis/apps/chronos/model_extensions.py index 2877278e..b0fec750 100644 --- a/aleksis/apps/chronos/model_extensions.py +++ b/aleksis/apps/chronos/model_extensions.py @@ -94,7 +94,5 @@ def for_timetables(cls): Announcement.class_method(for_timetables) Announcement.field( - show_in_timetables=BooleanField( - verbose_name=_("Show announcement in timetable views?") - ) + show_in_timetables=BooleanField(verbose_name=_("Show announcement in timetable views?")) ) diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index b82a5ec9..5ac95103 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -43,9 +43,7 @@ class TimePeriod(ExtensibleModel): WEEKDAY_CHOICES = list(enumerate(i18n_day_names_lazy())) WEEKDAY_CHOICES_SHORT = list(enumerate(i18n_day_abbrs_lazy())) - weekday = models.PositiveSmallIntegerField( - verbose_name=_("Week day"), choices=WEEKDAY_CHOICES - ) + weekday = models.PositiveSmallIntegerField(verbose_name=_("Week day"), choices=WEEKDAY_CHOICES) period = models.PositiveSmallIntegerField(verbose_name=_("Number of period")) time_start = models.TimeField(verbose_name=_("Start time")) @@ -120,15 +118,11 @@ class TimePeriod(ExtensibleModel): @classproperty def period_min(cls) -> int: - return cls.objects.aggregate(period__min=Coalesce(Min("period"), 1)).get( - "period__min" - ) + return cls.objects.aggregate(period__min=Coalesce(Min("period"), 1)).get("period__min") @classproperty def period_max(cls) -> int: - return cls.objects.aggregate(period__max=Coalesce(Max("period"), 7)).get( - "period__max" - ) + return cls.objects.aggregate(period__max=Coalesce(Max("period"), 7)).get("period__max") @classproperty def time_min(cls) -> Optional[time]: @@ -140,15 +134,11 @@ class TimePeriod(ExtensibleModel): @classproperty def weekday_min(cls) -> int: - return cls.objects.aggregate(weekday__min=Coalesce(Min("weekday"), 0)).get( - "weekday__min" - ) + return cls.objects.aggregate(weekday__min=Coalesce(Min("weekday"), 0)).get("weekday__min") @classproperty def weekday_max(cls) -> int: - return cls.objects.aggregate(weekday__max=Coalesce(Max("weekday"), 6)).get( - "weekday__max" - ) + return cls.objects.aggregate(weekday__max=Coalesce(Max("weekday"), 6)).get("weekday__max") class Meta: unique_together = [["weekday", "period"]] @@ -159,9 +149,7 @@ class TimePeriod(ExtensibleModel): class Subject(ExtensibleModel): - short_name = models.CharField( - verbose_name=_("Short name"), max_length=255, unique=True - ) + short_name = models.CharField(verbose_name=_("Short name"), max_length=255, unique=True) name = models.CharField(verbose_name=_("Long name"), max_length=255, unique=True) colour_fg = ColorField(verbose_name=_("Foreground colour"), blank=True) @@ -177,9 +165,7 @@ class Subject(ExtensibleModel): class Room(ExtensibleModel): - short_name = models.CharField( - verbose_name=_("Short name"), max_length=255, unique=True - ) + short_name = models.CharField(verbose_name=_("Short name"), max_length=255, unique=True) name = models.CharField(verbose_name=_("Long name"), max_length=255) def __str__(self) -> str: @@ -193,23 +179,15 @@ class Room(ExtensibleModel): class Lesson(ExtensibleModel, GroupPropertiesMixin, TeacherPropertiesMixin): subject = models.ForeignKey( - "Subject", - on_delete=models.CASCADE, - related_name="lessons", - verbose_name=_("Subject"), + "Subject", on_delete=models.CASCADE, related_name="lessons", verbose_name=_("Subject"), ) teachers = models.ManyToManyField( "core.Person", related_name="lessons_as_teacher", verbose_name=_("Teachers") ) periods = models.ManyToManyField( - "TimePeriod", - related_name="lessons", - through="LessonPeriod", - verbose_name=_("Periods"), - ) - groups = models.ManyToManyField( - "core.Group", related_name="lessons", verbose_name=_("Groups") + "TimePeriod", related_name="lessons", through="LessonPeriod", verbose_name=_("Periods"), ) + groups = models.ManyToManyField("core.Group", related_name="lessons", verbose_name=_("Groups")) date_start = models.DateField(verbose_name=_("Start date"), null=True) date_end = models.DateField(verbose_name=_("End date"), null=True) @@ -234,9 +212,7 @@ class Lesson(ExtensibleModel, GroupPropertiesMixin, TeacherPropertiesMixin): class LessonSubstitution(ExtensibleModel): objects = LessonSubstitutionManager.from_queryset(LessonSubstitutionQuerySet)() - week = models.IntegerField( - verbose_name=_("Week"), default=CalendarWeek.current_week - ) + week = models.IntegerField(verbose_name=_("Week"), default=CalendarWeek.current_week) lesson_period = models.ForeignKey( "LessonPeriod", models.CASCADE, "substitutions", verbose_name=_("Lesson period") @@ -251,14 +227,9 @@ class LessonSubstitution(ExtensibleModel): verbose_name=_("Subject"), ) teachers = models.ManyToManyField( - "core.Person", - related_name="lesson_substitutions", - blank=True, - verbose_name=_("Teachers"), - ) - room = models.ForeignKey( - "Room", models.CASCADE, null=True, blank=True, verbose_name=_("Room") + "core.Person", related_name="lesson_substitutions", blank=True, verbose_name=_("Teachers"), ) + room = models.ForeignKey("Room", models.CASCADE, null=True, blank=True, verbose_name=_("Room")) cancelled = models.BooleanField(default=False, verbose_name=_("Cancelled?")) cancelled_for_teachers = models.BooleanField( @@ -269,9 +240,7 @@ class LessonSubstitution(ExtensibleModel): def clean(self) -> None: if self.subject and self.cancelled: - raise ValidationError( - _("Lessons can only be either substituted or cancelled.") - ) + raise ValidationError(_("Lessons can only be either substituted or cancelled.")) @property def date(self): @@ -305,24 +274,14 @@ class LessonPeriod(ExtensibleModel): objects = LessonPeriodManager.from_queryset(LessonPeriodQuerySet)() lesson = models.ForeignKey( - "Lesson", - models.CASCADE, - related_name="lesson_periods", - verbose_name=_("Lesson"), + "Lesson", models.CASCADE, related_name="lesson_periods", verbose_name=_("Lesson"), ) period = models.ForeignKey( - "TimePeriod", - models.CASCADE, - related_name="lesson_periods", - verbose_name=_("Time period"), + "TimePeriod", models.CASCADE, related_name="lesson_periods", verbose_name=_("Time period"), ) room = models.ForeignKey( - "Room", - models.CASCADE, - null=True, - related_name="lesson_periods", - verbose_name=_("Room"), + "Room", models.CASCADE, null=True, related_name="lesson_periods", verbose_name=_("Room"), ) def get_substitution(self, week: Optional[int] = None) -> LessonSubstitution: @@ -383,9 +342,7 @@ class TimetableWidget(DashboardWidget): request = get_request() context = {"has_plan": True} - wanted_day = TimePeriod.get_next_relevant_day( - timezone.now().date(), datetime.now().time() - ) + wanted_day = TimePeriod.get_next_relevant_day(timezone.now().date(), datetime.now().time()) if has_person(request.user): person = request.user.person @@ -419,9 +376,7 @@ class TimetableWidget(DashboardWidget): class AbsenceReason(ExtensibleModel): short_name = models.CharField(verbose_name=_("Short name"), max_length=255) - name = models.CharField( - verbose_name=_("Name"), blank=True, null=True, max_length=255 - ) + name = models.CharField(verbose_name=_("Name"), blank=True, null=True, max_length=255) def __str__(self): if self.name: @@ -508,10 +463,7 @@ class Absence(ExtensibleModel): class Exam(ExtensibleModel): lesson = models.ForeignKey( - "Lesson", - on_delete=models.CASCADE, - related_name="exams", - verbose_name=_("Lesson"), + "Lesson", on_delete=models.CASCADE, related_name="exams", verbose_name=_("Lesson"), ) date = models.DateField(verbose_name=_("Date of exam"), null=True) @@ -616,27 +568,15 @@ class Break(ExtensibleModel): @property def weekday(self): - return ( - self.after_period.weekday - if self.after_period - else self.before_period.weekday - ) + return self.after_period.weekday if self.after_period else self.before_period.weekday @property def after_period_number(self): - return ( - self.after_period.period - if self.after_period - else self.before_period.period - 1 - ) + return self.after_period.period if self.after_period else self.before_period.period - 1 @property def before_period_number(self): - return ( - self.before_period.period - if self.before_period - else self.after_period.period + 1 - ) + return self.before_period.period if self.before_period else self.after_period.period + 1 @property def time_start(self): @@ -677,15 +617,10 @@ class Supervision(ExtensibleModel): Break, models.CASCADE, verbose_name=_("Break"), related_name="supervisions" ) teacher = models.ForeignKey( - "core.Person", - models.CASCADE, - related_name="supervisions", - verbose_name=_("Teacher"), + "core.Person", models.CASCADE, related_name="supervisions", verbose_name=_("Teacher"), ) - def get_substitution( - self, week: Optional[int] = None - ) -> Optional[SupervisionSubstitution]: + def get_substitution(self, week: Optional[int] = None) -> Optional[SupervisionSubstitution]: wanted_week = week or getattr(self, "_week", None) or CalendarWeek().week wanted_week = CalendarWeek(week=wanted_week) # We iterate over all substitutions because this can make use of @@ -713,10 +648,7 @@ class Supervision(ExtensibleModel): class SupervisionSubstitution(ExtensibleModel): date = models.DateField(verbose_name=_("Date")) supervision = models.ForeignKey( - Supervision, - models.CASCADE, - verbose_name=_("Supervision"), - related_name="substitutions", + Supervision, models.CASCADE, verbose_name=_("Supervision"), related_name="substitutions", ) teacher = models.ForeignKey( "core.Person", @@ -743,9 +675,7 @@ class Event(ExtensibleModel, GroupPropertiesMixin, TeacherPropertiesMixin): objects = models.Manager.from_queryset(EventQuerySet)() - title = models.CharField( - verbose_name=_("Title"), max_length=255, blank=True, null=True - ) + title = models.CharField(verbose_name=_("Title"), max_length=255, blank=True, null=True) date_start = models.DateField(verbose_name=_("Start date"), null=True) date_end = models.DateField(verbose_name=_("End date"), null=True) @@ -757,18 +687,11 @@ class Event(ExtensibleModel, GroupPropertiesMixin, TeacherPropertiesMixin): related_name="+", ) period_to = models.ForeignKey( - "TimePeriod", - on_delete=models.CASCADE, - verbose_name=_("End time period"), - related_name="+", + "TimePeriod", on_delete=models.CASCADE, verbose_name=_("End time period"), related_name="+", ) - groups = models.ManyToManyField( - "core.Group", related_name="events", verbose_name=_("Groups") - ) - rooms = models.ManyToManyField( - "Room", related_name="events", verbose_name=_("Rooms") - ) + groups = models.ManyToManyField("core.Group", related_name="events", verbose_name=_("Groups")) + rooms = models.ManyToManyField("Room", related_name="events", verbose_name=_("Rooms")) teachers = models.ManyToManyField( "core.Person", related_name="events", verbose_name=_("Teachers") ) @@ -797,9 +720,7 @@ class Event(ExtensibleModel, GroupPropertiesMixin, TeacherPropertiesMixin): class Meta: ordering = ["date_start"] - indexes = [ - models.Index(fields=["period_from", "period_to", "date_start", "date_end"]) - ] + indexes = [models.Index(fields=["period_from", "period_to", "date_start", "date_end"])] verbose_name = _("Event") verbose_name_plural = _("Events") @@ -809,14 +730,9 @@ class ExtraLesson(ExtensibleModel, GroupPropertiesMixin): objects = models.Manager.from_queryset(ExtraLessonQuerySet)() - week = models.IntegerField( - verbose_name=_("Week"), default=CalendarWeek.current_week - ) + week = models.IntegerField(verbose_name=_("Week"), default=CalendarWeek.current_week) period = models.ForeignKey( - "TimePeriod", - models.CASCADE, - related_name="extra_lessons", - verbose_name=_("Time period"), + "TimePeriod", models.CASCADE, related_name="extra_lessons", verbose_name=_("Time period"), ) subject = models.ForeignKey( @@ -829,21 +745,13 @@ class ExtraLesson(ExtensibleModel, GroupPropertiesMixin): "core.Group", related_name="extra_lessons", verbose_name=_("Groups") ) teachers = models.ManyToManyField( - "core.Person", - related_name="extra_lessons_as_teacher", - verbose_name=_("Teachers"), + "core.Person", related_name="extra_lessons_as_teacher", verbose_name=_("Teachers"), ) room = models.ForeignKey( - "Room", - models.CASCADE, - null=True, - related_name="extra_lessons", - verbose_name=_("Room"), + "Room", models.CASCADE, null=True, related_name="extra_lessons", verbose_name=_("Room"), ) - comment = models.CharField( - verbose_name=_("Comment"), blank=True, null=True, max_length=255 - ) + comment = models.CharField(verbose_name=_("Comment"), blank=True, null=True, max_length=255) def __str__(self): return f"{self.week}, {self.period}, {self.subject}" diff --git a/aleksis/apps/chronos/preferences.py b/aleksis/apps/chronos/preferences.py index c0a4294d..f7e610c5 100644 --- a/aleksis/apps/chronos/preferences.py +++ b/aleksis/apps/chronos/preferences.py @@ -30,9 +30,7 @@ class ShortenGroups(BooleanPreference): name = "shorten_groups" default = True verbose_name = _("Shorten groups in timetable views") - help_text = _( - "If there are more groups than the set limit, they will be collapsed." - ) + help_text = _("If there are more groups than the set limit, they will be collapsed.") @site_preferences_registry.register diff --git a/aleksis/apps/chronos/rules.py b/aleksis/apps/chronos/rules.py index dc0369b0..6a0edbc8 100644 --- a/aleksis/apps/chronos/rules.py +++ b/aleksis/apps/chronos/rules.py @@ -10,9 +10,7 @@ from .models import LessonSubstitution from .util.predicates import has_timetable_perm # View timetable overview -view_timetable_overview_predicate = has_person & has_global_perm( - "chronos.view_timetable_overview" -) +view_timetable_overview_predicate = has_person & has_global_perm("chronos.view_timetable_overview") add_perm("chronos.view_timetable_overview", view_timetable_overview_predicate) # View my timetable diff --git a/aleksis/apps/chronos/tables.py b/aleksis/apps/chronos/tables.py index 92a966fe..bc4011f3 100644 --- a/aleksis/apps/chronos/tables.py +++ b/aleksis/apps/chronos/tables.py @@ -31,12 +31,8 @@ class LessonsTable(tables.Table): row_attrs = {"class": _css_class_from_lesson_state} period__period = tables.Column(accessor="period__period") - lesson__groups = tables.Column( - accessor="lesson__group_names", verbose_name=_("Groups") - ) - lesson__teachers = tables.Column( - accessor="lesson__teacher_names", verbose_name=_("Teachers") - ) + lesson__groups = tables.Column(accessor="lesson__group_names", verbose_name=_("Groups")) + lesson__teachers = tables.Column(accessor="lesson__teacher_names", verbose_name=_("Teachers")) lesson__subject = tables.Column(accessor="lesson__subject") room = tables.Column(accessor="room") edit_substitution = tables.LinkColumn( diff --git a/aleksis/apps/chronos/urls.py b/aleksis/apps/chronos/urls.py index 3d68c3a1..666183ec 100644 --- a/aleksis/apps/chronos/urls.py +++ b/aleksis/apps/chronos/urls.py @@ -17,15 +17,11 @@ urlpatterns = [ name="timetable_by_week", ), path( - "timetable/<str:type_>/<int:pk>/<str:regular>/", - views.timetable, - name="timetable_regular", + "timetable/<str:type_>/<int:pk>/<str:regular>/", views.timetable, name="timetable_regular", ), path("lessons/", views.lessons_day, name="lessons_day"), path( - "lessons/<int:year>/<int:month>/<int:day>/", - views.lessons_day, - name="lessons_day_by_date", + "lessons/<int:year>/<int:month>/<int:day>/", views.lessons_day, name="lessons_day_by_date", ), path( "lessons/<int:id_>/<int:week>/substition/", @@ -39,10 +35,7 @@ urlpatterns = [ ), path("substitutions/", views.substitutions, name="substitutions"), path( - "substitutions/print/", - views.substitutions, - {"is_print": True}, - name="substitutions_print", + "substitutions/print/", views.substitutions, {"is_print": True}, name="substitutions_print", ), path( "substitutions/<int:year>/<int:month>/<int:day>/", diff --git a/aleksis/apps/chronos/util/build.py b/aleksis/apps/chronos/util/build.py index e53eea2a..0083ec9c 100644 --- a/aleksis/apps/chronos/util/build.py +++ b/aleksis/apps/chronos/util/build.py @@ -21,9 +21,7 @@ ExtraLesson = apps.get_model("chronos", "ExtraLesson") def build_timetable( - type_: Union[TimetableType, str], - obj: Union[int, Person], - date_ref: Union[CalendarWeek, date], + type_: Union[TimetableType, str], obj: Union[int, Person], date_ref: Union[CalendarWeek, date], ): needed_breaks = [] @@ -50,9 +48,7 @@ def build_timetable( if is_person: lesson_periods = LessonPeriod.objects.daily_lessons_for_person(obj, date_ref) else: - lesson_periods = LessonPeriod.objects.in_week(date_ref).filter_from_type( - type_, obj - ) + lesson_periods = LessonPeriod.objects.in_week(date_ref).filter_from_type(type_, obj) # Sort lesson periods in a dict lesson_periods_per_period = lesson_periods.group_by_periods(is_person=is_person) @@ -61,9 +57,7 @@ def build_timetable( if is_person: extra_lessons = ExtraLesson.objects.on_day(date_ref).filter_from_person(obj) else: - extra_lessons = ExtraLesson.objects.filter(week=date_ref.week).filter_from_type( - type_, obj - ) + extra_lessons = ExtraLesson.objects.filter(week=date_ref.week).filter_from_type(type_, obj) # Sort lesson periods in a dict extra_lessons_per_period = extra_lessons.group_by_periods(is_person=is_person) @@ -130,9 +124,7 @@ def build_timetable( week = CalendarWeek.from_date(date_ref) else: week = date_ref - supervisions = ( - Supervision.objects.all().annotate_week(week).filter_by_teacher(obj) - ) + supervisions = Supervision.objects.all().annotate_week(week).filter_by_teacher(obj) if is_person: supervisions.filter_by_weekday(date_ref.weekday()) @@ -146,10 +138,7 @@ def build_timetable( if period_after_break not in needed_breaks: needed_breaks.append(period_after_break) - if ( - not is_person - and period_after_break not in supervisions_per_period_after - ): + if not is_person and period_after_break not in supervisions_per_period_after: supervisions_per_period_after[period_after_break] = {} if is_person: @@ -175,9 +164,7 @@ def build_timetable( if not is_person: cols = [] - for weekday in range( - TimePeriod.weekday_min, TimePeriod.weekday_max + 1 - ): + for weekday in range(TimePeriod.weekday_min, TimePeriod.weekday_max + 1): col = None if ( period in supervisions_per_period_after @@ -206,32 +193,21 @@ def build_timetable( if not is_person: cols = [] - for weekday in range( - TimePeriod.weekday_min, TimePeriod.weekday_max + 1 - ): + for weekday in range(TimePeriod.weekday_min, TimePeriod.weekday_max + 1): col = [] # Add lesson periods - if ( - period in lesson_periods_per_period - and weekday not in holidays_per_weekday - ): + if period in lesson_periods_per_period and weekday not in holidays_per_weekday: if weekday in lesson_periods_per_period[period]: col += lesson_periods_per_period[period][weekday] # Add extra lessons - if ( - period in extra_lessons_per_period - and weekday not in holidays_per_weekday - ): + if period in extra_lessons_per_period and weekday not in holidays_per_weekday: if weekday in extra_lessons_per_period[period]: col += extra_lessons_per_period[period][weekday] # Add events - if ( - period in events_per_period - and weekday not in holidays_per_weekday - ): + if period in events_per_period and weekday not in holidays_per_weekday: if weekday in events_per_period[period]: col += events_per_period[period][weekday] @@ -328,9 +304,7 @@ def build_substitutions_list(wanted_day: date) -> List[dict]: return rows -def build_weekdays( - base: List[Tuple[int, str]], wanted_week: CalendarWeek -) -> List[dict]: +def build_weekdays(base: List[Tuple[int, str]], wanted_week: CalendarWeek) -> List[dict]: holidays_per_weekday = Holiday.in_week(wanted_week) weekdays = [] @@ -340,9 +314,7 @@ def build_weekdays( "key": key, "name": name, "date": wanted_week[key], - "holiday": holidays_per_weekday[key] - if key in holidays_per_weekday - else None, + "holiday": holidays_per_weekday[key] if key in holidays_per_weekday else None, } weekdays.append(weekday) diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py index 22f0eced..cad22382 100644 --- a/aleksis/apps/chronos/views.py +++ b/aleksis/apps/chronos/views.py @@ -29,19 +29,16 @@ def all_timetables(request: HttpRequest) -> HttpResponse: """View all timetables for persons, groups and rooms.""" context = {} - teachers = Person.objects.annotate( - lessons_count=Count("lessons_as_teacher") - ).filter(lessons_count__gt=0) + teachers = Person.objects.annotate(lessons_count=Count("lessons_as_teacher")).filter( + lessons_count__gt=0 + ) groups = Group.objects.annotate( - lessons_count=Count("lessons"), - child_lessons_count=Count("child_groups__lessons"), + lessons_count=Count("lessons"), child_lessons_count=Count("child_groups__lessons"), ) classes = groups.filter(lessons_count__gt=0, parent_groups=None) | groups.filter( child_lessons_count__gt=0, parent_groups=None ) - rooms = Room.objects.annotate(lessons_count=Count("lesson_periods")).filter( - lessons_count__gt=0 - ) + rooms = Room.objects.annotate(lessons_count=Count("lesson_periods")).filter(lessons_count__gt=0) context["teachers"] = teachers context["classes"] = classes @@ -64,9 +61,7 @@ def my_timetable( wanted_day = timezone.datetime(year=year, month=month, day=day).date() wanted_day = TimePeriod.get_next_relevant_day(wanted_day) else: - wanted_day = TimePeriod.get_next_relevant_day( - timezone.now().date(), datetime.now().time() - ) + wanted_day = TimePeriod.get_next_relevant_day(timezone.now().date(), datetime.now().time()) if has_person(request.user): person = request.user.person @@ -155,9 +150,7 @@ def timetable( # Build lists with weekdays and corresponding dates (long and short variant) context["weekdays"] = build_weekdays(TimePeriod.WEEKDAY_CHOICES, wanted_week) - context["weekdays_short"] = build_weekdays( - TimePeriod.WEEKDAY_CHOICES_SHORT, wanted_week - ) + context["weekdays_short"] = build_weekdays(TimePeriod.WEEKDAY_CHOICES_SHORT, wanted_week) context["weeks"] = get_weeks_for_year(year=wanted_week.year) context["week"] = wanted_week @@ -204,9 +197,7 @@ def lessons_day( wanted_day = timezone.datetime(year=year, month=month, day=day).date() wanted_day = TimePeriod.get_next_relevant_day(wanted_day) else: - wanted_day = TimePeriod.get_next_relevant_day( - timezone.now().date(), datetime.now().time() - ) + wanted_day = TimePeriod.get_next_relevant_day(timezone.now().date(), datetime.now().time()) # Get lessons lesson_periods = LessonPeriod.objects.on_day(wanted_day) @@ -269,9 +260,7 @@ def edit_substitution(request: HttpRequest, id_: int, week: int) -> HttpResponse messages.success(request, _("The substitution has been saved.")) date = wanted_week[lesson_period.period.weekday] - return redirect( - "lessons_day_by_date", year=date.year, month=date.month, day=date.day - ) + return redirect("lessons_day_by_date", year=date.year, month=date.month, day=date.day) context["edit_substitution_form"] = edit_substitution_form @@ -292,9 +281,7 @@ def delete_substitution(request: HttpRequest, id_: int, week: int) -> HttpRespon messages.success(request, _("The substitution has been deleted.")) date = wanted_week[lesson_period.period.weekday] - return redirect( - "lessons_day_by_date", year=date.year, month=date.month, day=date.day - ) + return redirect("lessons_day_by_date", year=date.year, month=date.month, day=date.day) @permission_required("chronos.view_substitutions") @@ -312,9 +299,7 @@ def substitutions( wanted_day = timezone.datetime(year=year, month=month, day=day).date() wanted_day = TimePeriod.get_next_relevant_day(wanted_day) else: - wanted_day = TimePeriod.get_next_relevant_day( - timezone.now().date(), datetime.now().time() - ) + wanted_day = TimePeriod.get_next_relevant_day(timezone.now().date(), datetime.now().time()) day_number = get_site_preferences()["chronos__substitutions_print_number_of_days"] day_contexts = {} -- GitLab