diff --git a/aleksis/apps/chronos/admin.py b/aleksis/apps/chronos/admin.py
index 8c99c4b5c23d10f027fae74e34da80ecfa6ea8a6..f2fefcd458f610f8cfd265e5b1ed6af8ffae1d6d 100644
--- a/aleksis/apps/chronos/admin.py
+++ b/aleksis/apps/chronos/admin.py
@@ -4,22 +4,22 @@ from django.contrib import admin
 from django.utils.html import format_html
 
 from .models import (
-    TimetableWidget,
-    Lesson,
-    LessonSubstitution,
-    SupervisionSubstitution,
-    LessonPeriod,
     Absence,
+    AbsenceReason,
+    Break,
     Event,
+    ExtraLesson,
     Holiday,
-    Supervision,
+    Lesson,
+    LessonPeriod,
+    LessonSubstitution,
+    Room,
     Subject,
+    Supervision,
     SupervisionArea,
-    Room,
-    AbsenceReason,
-    Break,
+    SupervisionSubstitution,
     TimePeriod,
-    ExtraLesson,
+    TimetableWidget,
 )
 from .util.format import format_date_period, format_m2m
 
diff --git a/aleksis/apps/chronos/forms.py b/aleksis/apps/chronos/forms.py
index ab31b103aeccfd231787f82bae36f80eb8586191..3233cf8915326860c3d5370915c5ae37bd059a08 100644
--- a/aleksis/apps/chronos/forms.py
+++ b/aleksis/apps/chronos/forms.py
@@ -1,11 +1,13 @@
 from django import forms
-from django_select2.forms import ModelSelect2MultipleWidget
 from django.utils.translation import gettext_lazy as _
+
+from django_select2.forms import ModelSelect2MultipleWidget
 from material import Fieldset
 
-from .models import LessonSubstitution
 from aleksis.core.forms import AnnouncementForm
 
+from .models import LessonSubstitution
+
 
 class LessonSubstitutionForm(forms.ModelForm):
     """Form to manage substitutions."""
diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py
index d20e622eb7781e9a1601c689fdee4b191144de6c..ae8a1162c0b106fbc23e2a72bd50e71513675ced 100644
--- a/aleksis/apps/chronos/managers.py
+++ b/aleksis/apps/chronos/managers.py
@@ -1,14 +1,15 @@
-from datetime import date, timedelta, datetime
+from datetime import date, datetime, timedelta
 from enum import Enum
-from typing import Union, Optional, OrderedDict
+from typing import Optional, OrderedDict, Union
 
-from aleksis.apps.chronos.util.date import week_weekday_from_date
-from calendarweek import CalendarWeek
 from django.db import models
-from django.db.models import F, Q, Count
+from django.db.models import Count, F, Q
 from django.http import QueryDict
 
-from aleksis.core.models import Person, Group
+from calendarweek import CalendarWeek
+
+from aleksis.apps.chronos.util.date import week_weekday_from_date
+from aleksis.core.models import Group, Person
 from aleksis.core.util.core_helpers import get_site_preferences
 
 
diff --git a/aleksis/apps/chronos/migrations/0007_advanced_models_from_untis.py b/aleksis/apps/chronos/migrations/0007_advanced_models_from_untis.py
index ccefed73c6c2cb1be14b4aa9acf87f447da97b08..9079ed95da7d99e78ccd1ce49421bc12ae44f0b7 100644
--- a/aleksis/apps/chronos/migrations/0007_advanced_models_from_untis.py
+++ b/aleksis/apps/chronos/migrations/0007_advanced_models_from_untis.py
@@ -1,9 +1,10 @@
 # Generated by Django 3.0.3 on 2020-03-08 20:16
 
-import colorfield.fields
 import django.contrib.postgres.fields.jsonb
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
+
+import colorfield.fields
 
 
 class Migration(migrations.Migration):
diff --git a/aleksis/apps/chronos/migrations/0008_break_period.py b/aleksis/apps/chronos/migrations/0008_break_period.py
index 971432ab9282bd68a8a4159d8f9306073d5c9ab0..dd8945d199e69acade0965af58402e9cd0da75a8 100644
--- a/aleksis/apps/chronos/migrations/0008_break_period.py
+++ b/aleksis/apps/chronos/migrations/0008_break_period.py
@@ -1,7 +1,7 @@
 # Generated by Django 3.0.4 on 2020-03-28 20:24
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/aleksis/apps/chronos/migrations/0011_absence_for_groups_and_rooms.py b/aleksis/apps/chronos/migrations/0011_absence_for_groups_and_rooms.py
index cf7df94cb62f676c1e25188e086bf9460483dcd3..a4f9d800a596ab4941a05c8cf3876e46d10e9ed3 100644
--- a/aleksis/apps/chronos/migrations/0011_absence_for_groups_and_rooms.py
+++ b/aleksis/apps/chronos/migrations/0011_absence_for_groups_and_rooms.py
@@ -1,7 +1,7 @@
 # Generated by Django 3.0.5 on 2020-04-13 15:07
 
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):
diff --git a/aleksis/apps/chronos/migrations/0014_extra_lesson.py b/aleksis/apps/chronos/migrations/0014_extra_lesson.py
index d3a497d90560ff263a5e15d01e1e25d017432e19..f93bde3995a221f191fe7f416c01110db47da179 100644
--- a/aleksis/apps/chronos/migrations/0014_extra_lesson.py
+++ b/aleksis/apps/chronos/migrations/0014_extra_lesson.py
@@ -1,9 +1,10 @@
 # Generated by Django 3.0.5 on 2020-04-18 20:21
 
-import calendarweek.calendarweek
 import django.contrib.postgres.fields.jsonb
-from django.db import migrations, models
 import django.db.models.deletion
+from django.db import migrations, models
+
+import calendarweek.calendarweek
 
 
 class Migration(migrations.Migration):
diff --git a/aleksis/apps/chronos/model_extensions.py b/aleksis/apps/chronos/model_extensions.py
index b0fec7505563596898b555f014aafa13a88f4768..774f992d3bd7ca133df0ec0c3591a397c31fe9f1 100644
--- a/aleksis/apps/chronos/model_extensions.py
+++ b/aleksis/apps/chronos/model_extensions.py
@@ -1,9 +1,10 @@
 from typing import Optional, Union
 
 from django.utils.translation import gettext_lazy as _
+
 from jsonstore import BooleanField
 
-from aleksis.core.models import Person, Group, Announcement
+from aleksis.core.models import Announcement, Group, Person
 
 from .managers import TimetableType
 from .models import Lesson, LessonPeriod
diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index 5ac951030d0a6772b87d895dda38b15c97fe9f84..a35a9332f1ae26ef5d8a23265814c1df366cf54f 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -1,21 +1,8 @@
 from __future__ import annotations
 
-from datetime import date, datetime, timedelta, time
+from datetime import date, datetime, time, timedelta
 from typing import Dict, Optional, Tuple, Union
 
-from aleksis.apps.chronos.managers import (
-    GroupPropertiesMixin,
-    TeacherPropertiesMixin,
-    LessonSubstitutionManager,
-    LessonSubstitutionQuerySet,
-    LessonPeriodManager,
-    LessonPeriodQuerySet,
-    AbsenceQuerySet,
-    HolidayQuerySet,
-    SupervisionQuerySet,
-    EventQuerySet,
-    ExtraLessonQuerySet,
-)
 from django.core.exceptions import ValidationError
 from django.db import models
 from django.db.models import Max, Min, Q
@@ -27,16 +14,28 @@ from django.utils.decorators import classproperty
 from django.utils.formats import date_format
 from django.utils.translation import gettext_lazy as _
 
-from calendarweek.django import CalendarWeek, i18n_day_names_lazy, i18n_day_abbrs_lazy
+from calendarweek.django import CalendarWeek, i18n_day_abbrs_lazy, i18n_day_names_lazy
 from colorfield.fields import ColorField
 from django_global_request.middleware import get_request
 
+from aleksis.apps.chronos.managers import (
+    AbsenceQuerySet,
+    EventQuerySet,
+    ExtraLessonQuerySet,
+    GroupPropertiesMixin,
+    HolidayQuerySet,
+    LessonPeriodManager,
+    LessonPeriodQuerySet,
+    LessonSubstitutionManager,
+    LessonSubstitutionQuerySet,
+    SupervisionQuerySet,
+    TeacherPropertiesMixin,
+)
+from aleksis.apps.chronos.util.date import week_weekday_from_date
 from aleksis.apps.chronos.util.format import format_m2m
 from aleksis.core.mixins import ExtensibleModel
-from aleksis.core.models import Group, Person, DashboardWidget
-
-from aleksis.apps.chronos.util.date import week_weekday_from_date
-from aleksis.core.util.core_helpers import has_person, get_site_preferences
+from aleksis.core.models import DashboardWidget, Group, Person
+from aleksis.core.util.core_helpers import get_site_preferences, has_person
 
 
 class TimePeriod(ExtensibleModel):
diff --git a/aleksis/apps/chronos/preferences.py b/aleksis/apps/chronos/preferences.py
index f7e610c509ddb536728af14573255f6f4e2206d6..31b1fdb1a521aa8901206b0ed9f1c579a030cef3 100644
--- a/aleksis/apps/chronos/preferences.py
+++ b/aleksis/apps/chronos/preferences.py
@@ -3,10 +3,7 @@ from django.utils.translation import gettext as _
 from dynamic_preferences.preferences import Section
 from dynamic_preferences.types import BooleanPreference, IntegerPreference
 
-from aleksis.core.registries import (
-    site_preferences_registry,
-    person_preferences_registry,
-)
+from aleksis.core.registries import person_preferences_registry, site_preferences_registry
 
 chronos = Section("chronos", verbose_name=_("Chronos"))
 
diff --git a/aleksis/apps/chronos/rules.py b/aleksis/apps/chronos/rules.py
index 6a0edbc8492f8172d0fadcb80564bc93172c2dc5..6feb45b5f6182800d2979f86ea52909e9d51963e 100644
--- a/aleksis/apps/chronos/rules.py
+++ b/aleksis/apps/chronos/rules.py
@@ -1,11 +1,12 @@
 from rules import add_perm, always_allow
 
 from aleksis.core.util.predicates import (
-    has_person,
-    has_global_perm,
     has_any_object,
+    has_global_perm,
     has_object_perm,
+    has_person,
 )
+
 from .models import LessonSubstitution
 from .util.predicates import has_timetable_perm
 
diff --git a/aleksis/apps/chronos/templatetags/week_helpers.py b/aleksis/apps/chronos/templatetags/week_helpers.py
index 054d3f9e2c3feac25e5067db9df324124a771f88..acfb3a3a8859cc50c9e250520d9bcb32f3764ebe 100644
--- a/aleksis/apps/chronos/templatetags/week_helpers.py
+++ b/aleksis/apps/chronos/templatetags/week_helpers.py
@@ -4,11 +4,7 @@ from typing import Optional, Union
 from django import template
 from django.db.models.query import QuerySet
 
-from aleksis.apps.chronos.util.date import (
-    CalendarWeek,
-    week_period_to_date,
-    week_weekday_to_date,
-)
+from aleksis.apps.chronos.util.date import CalendarWeek, week_period_to_date, week_weekday_to_date
 
 register = template.Library()
 
diff --git a/aleksis/apps/chronos/util/build.py b/aleksis/apps/chronos/util/build.py
index 0083ec9c0cb1839e18546aafc3591eaf6513e7e3..d816403f06f422a8e4d0a4bc99bcca3ba14d76d1 100644
--- a/aleksis/apps/chronos/util/build.py
+++ b/aleksis/apps/chronos/util/build.py
@@ -1,11 +1,12 @@
 from collections import OrderedDict
 from datetime import date
-from typing import Union, List, Tuple
+from typing import List, Tuple, Union
 
-from calendarweek import CalendarWeek
 from django.apps import apps
 from django.db.models import QuerySet
 
+from calendarweek import CalendarWeek
+
 from aleksis.apps.chronos.managers import TimetableType
 from aleksis.core.models import Person
 
diff --git a/aleksis/apps/chronos/util/date.py b/aleksis/apps/chronos/util/date.py
index feb63bc8de2f7e3c9ea0dc68a6d4b187b5c80d0b..68bfcd3829f590feb8970aabfc50471408bd9c3a 100644
--- a/aleksis/apps/chronos/util/date.py
+++ b/aleksis/apps/chronos/util/date.py
@@ -1,11 +1,12 @@
 from datetime import date
-from typing import Tuple, List, Union
+from typing import List, Tuple, Union
 
-from calendarweek import CalendarWeek
-from calendarweek.django import i18n_day_names
 from django.utils import timezone
 from django.utils.translation import gettext_lazy as _
 
+from calendarweek import CalendarWeek
+from calendarweek.django import i18n_day_names
+
 
 def week_weekday_from_date(when: date) -> Tuple[CalendarWeek, int]:
     """Return a tuple of week and weekday from a given date."""
diff --git a/aleksis/apps/chronos/util/js.py b/aleksis/apps/chronos/util/js.py
index eb9082b0e46bcb06090ae853561d5c86c159ce56..9449fd2c56b69f3478c0606b145f11b69d75e324 100644
--- a/aleksis/apps/chronos/util/js.py
+++ b/aleksis/apps/chronos/util/js.py
@@ -1,4 +1,4 @@
-from datetime import datetime, time, date
+from datetime import date, datetime, time
 
 
 def date_unix(value: date) -> int:
diff --git a/aleksis/apps/chronos/util/predicates.py b/aleksis/apps/chronos/util/predicates.py
index 11b5d7411208a84361baf9bab63d97353541392d..c011acbdd31614638fdf2bddc38acc70a43cbf43 100644
--- a/aleksis/apps/chronos/util/predicates.py
+++ b/aleksis/apps/chronos/util/predicates.py
@@ -3,8 +3,8 @@ from django.db.models import Model
 
 from rules import predicate
 
-from aleksis.core.models import Group, Person
 from aleksis.apps.chronos.models import Room
+from aleksis.core.models import Group, Person
 
 
 @predicate
diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py
index cad223822825f866e8cabc9d8a20a81b234f7b50..87621266133799d3e3ffc3580b1076955c3042ec 100644
--- a/aleksis/apps/chronos/views.py
+++ b/aleksis/apps/chronos/views.py
@@ -9,19 +9,21 @@ from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse
 from django.utils import timezone
 from django.utils.translation import ugettext as _
+
 from django_tables2 import RequestConfig
 from rules.contrib.views import permission_required
 
-from aleksis.core.models import Person, Group, Announcement
+from aleksis.core.models import Announcement, Group, Person
 from aleksis.core.util import messages
+from aleksis.core.util.core_helpers import get_site_preferences, has_person
+
 from .forms import LessonSubstitutionForm
 from .managers import TimetableType
-from .models import LessonPeriod, LessonSubstitution, TimePeriod, Room, Holiday, Absence
+from .models import Absence, Holiday, LessonPeriod, LessonSubstitution, Room, TimePeriod
 from .tables import LessonsTable
-from .util.build import build_timetable, build_substitutions_list, build_weekdays
-from .util.js import date_unix
+from .util.build import build_substitutions_list, build_timetable, build_weekdays
 from .util.date import CalendarWeek, get_weeks_for_year
-from aleksis.core.util.core_helpers import has_person, get_site_preferences
+from .util.js import date_unix
 
 
 @permission_required("chronos.view_timetable_overview")