diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue
index e9559ac971bc834dadb96f8f7554004268de84a2..a07172dc5834feb68eeab69cd522774c52279256 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue
@@ -26,7 +26,13 @@ import PersonChip from "aleksis.core/components/person/PersonChip.vue";
     >
       {{ documentation.course?.name }}
     </span>
-    <div :class="{ 'd-flex align-center flex-wrap gap': true, 'justify-center': largeGrid, 'justify-start': !largeGrid }">
+    <div
+      :class="{
+        'd-flex align-center flex-wrap gap': true,
+        'justify-center': largeGrid,
+        'justify-start': !largeGrid,
+      }"
+    >
       <subject-chip
         v-if="documentation.subject"
         :subject="documentation.subject"
@@ -36,7 +42,8 @@ import PersonChip from "aleksis.core/components/person/PersonChip.vue";
       <subject-chip
         v-if="
           documentation?.lessonEvent?.amends?.subject &&
-          documentation.lessonEvent.amends.subject.id !== documentation.subject.id
+          documentation.lessonEvent.amends.subject.id !==
+            documentation.subject.id
         "
         :subject="documentation.lessonEvent.amends.subject"
         v-bind="compact ? dialogActivator.attrs : {}"
@@ -45,7 +52,12 @@ import PersonChip from "aleksis.core/components/person/PersonChip.vue";
         disabled
       />
     </div>
-    <div :class="{ 'd-flex align-center flex-wrap gap': true, 'justify-end': !largeGrid }">
+    <div
+      :class="{
+        'd-flex align-center flex-wrap gap': true,
+        'justify-end': !largeGrid,
+      }"
+    >
       <person-chip
         v-for="teacher in documentation.teachers"
         :key="documentation.id + '-teacher-' + teacher.id"
@@ -56,6 +68,7 @@ import PersonChip from "aleksis.core/components/person/PersonChip.vue";
       />
       <person-chip
         v-for="teacher in amendedTeachers"
+        :key="documentation.id + '-amendedTeacher-' + teacher.id"
         :person="teacher"
         no-link
         v-bind="compact ? dialogActivator.attrs : {}"
diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonSummary.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonSummary.vue
index 7e3cc8841d95ff49f22943c99fba58ea90dfff25..cee9d5136fa39fbe0138de6d0ca71a1ae8727e9f 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonSummary.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonSummary.vue
@@ -54,16 +54,20 @@
         :loading="loading"
       >
         <template #append>
-            <v-tooltip bottom>
-              <template v-slot:activator="{ on, attrs }">
-                <v-scroll-x-transition>
-                  <v-icon v-if="appendIcon" :color="appendIconColor" v-on="on" v-bind="attrs">{{
-                    appendIcon
-                  }}</v-icon>
-                </v-scroll-x-transition>
-              </template>
-              <span>{{ appendIconTooltip }}</span>
-            </v-tooltip>
+          <v-tooltip bottom>
+            <template v-slot:activator="{ on, attrs }">
+              <v-scroll-x-transition>
+                <v-icon
+                  v-if="appendIcon"
+                  :color="appendIconColor"
+                  v-on="on"
+                  v-bind="attrs"
+                  >{{ appendIcon }}</v-icon
+                >
+              </v-scroll-x-transition>
+            </template>
+            <span>{{ appendIconTooltip }}</span>
+          </v-tooltip>
         </template>
       </v-text-field>
       <div
@@ -255,7 +259,12 @@ export default {
     },
     appendIconTooltip() {
       return (
-        { $success: this.$t("alsijil.coursebook.summary.topic.status.success"), $error: this.$t("alsijil.coursebook.summary.topic.status.error", { error: this.topicError }) }[this.appendIcon] || ""
+        {
+          $success: this.$t("alsijil.coursebook.summary.topic.status.success"),
+          $error: this.$t("alsijil.coursebook.summary.topic.status.error", {
+            error: this.topicError,
+          }),
+        }[this.appendIcon] || ""
       );
     },
   },
diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index 7045b2d03803550d9c20d89d0ffbf5ecd0eb969e..b7fa4d04a23df031ff479870c17cf5f1a3d53446 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -12,8 +12,8 @@ from aleksis.core.util.predicates import (
 
 from .util.predicates import (
     can_edit_documentation,
-    can_view_documentation,
     can_view_any_documentation,
+    can_view_documentation,
     has_lesson_group_object_perm,
     has_person_group_object_perm,
     has_personal_note_group_perm,
diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py
index c81468053383ef0a545f9467787ae37127bfd5bb..33bda1e7d5a586ff759eaf83f4b231ed43bf08c5 100644
--- a/aleksis/apps/alsijil/util/predicates.py
+++ b/aleksis/apps/alsijil/util/predicates.py
@@ -1,7 +1,7 @@
 from typing import Any, Union
 
 from django.contrib.auth.models import User
-from django.db.models import Prefetch, Q
+from django.db.models import Q
 from django.utils.timezone import localdate, localtime
 
 from rules import predicate