diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index 73d8879cf26c1f6e8281c41deaecced0d33a5547..08f185992830aad74934631674d1a55f4fff5977 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -21,6 +21,7 @@ from .util.predicates import (
     is_person_group_owner,
     is_personal_note_lesson_parent_group_owner,
     is_personal_note_lesson_teacher,
+    is_teacher,
 )
 
 # View lesson
@@ -99,6 +100,7 @@ view_week_personal_notes_predicate = has_person & (
     has_global_perm("alsijil.view_personalnote")
     | has_object_perm("core.view_personalnote_group")
     | is_group_owner
+    | (is_current_person & is_teacher)
 )
 add_perm("alsijil.view_week_personalnote", view_week_personal_notes_predicate)
 
diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py
index 3e62d17a2a3f338fa7c8f3a94dd8eb6c2a8fa821..f7f05ba2268182eb1989aa5c51fe8fe48c17d2c3 100644
--- a/aleksis/apps/alsijil/util/predicates.py
+++ b/aleksis/apps/alsijil/util/predicates.py
@@ -208,3 +208,9 @@ def has_any_object_absence(user: User) -> bool:
         member_of__in=get_objects_for_user(user, "core.register_absence_group", Group)
     ).exists():
         return True
+
+
+@predicate
+def is_teacher(user: User, obj: Person) -> bool:
+    """Predicate which checks if the provided object is a teacher."""
+    return user.person.is_teacher()