diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py
index ca1e2e5bffa70497f3522cde05cbb264b81be51b..f87bd956dadae6dc239c0b5d889a40b59a86e20f 100644
--- a/aleksis/apps/alsijil/forms.py
+++ b/aleksis/apps/alsijil/forms.py
@@ -2,7 +2,7 @@ from datetime import datetime
 
 from django import forms
 from django.core.exceptions import ValidationError
-from django.db.models import Count
+from django.db.models import Count, Q
 from django.utils.translation import gettext_lazy as _
 
 from django_select2.forms import Select2Widget
@@ -77,20 +77,39 @@ class SelectForm(forms.Form):
     def __init__(self, *args, **kwargs):
         self.request = kwargs.pop("request")
         super().__init__(*args, **kwargs)
-        self.fields["group"].queryset = (
+
+        person = self.request.user.person
+
+        group_pks = (
             Group.objects.for_current_school_term_or_all()
             .annotate(lessons_count=Count("lessons"))
             .filter(lessons_count__gt=0)
+            .values_list("pk", flat=True)
         )
+        group_qs = Group.objects.filter(
+            Q(child_groups__pk__in=group_pks) | Q(pk__in=group_pks)
+        ).distinct()
+
         if not check_global_permission(self.request.user, "alsijil.view_week"):
-            self.fields["group"].queryset = self.fields["group"].queryset & get_objects_for_user(
-                self.request.user, "core.register_absence_group", Group
+            group_qs = (
+                (
+                    group_qs
+                    & get_objects_for_user(
+                        self.request.user, "core.view_week_class_register_group", Group
+                    )
+                )
+                | group_qs.filter(members=person)
+                | group_qs.filter(owners=person)
             )
-        self.fields["teacher"].queryset = (
-            Person.objects.annotate(lessons_count=Count("lessons_as_teacher")).filter(lessons_count__gt=0)
-        )
+        self.fields["group"].queryset = group_qs
+
+        teacher_qs = Person.objects.annotate(
+            lessons_count=Count("lessons_as_teacher")
+        ).filter(lessons_count__gt=0)
         if not check_global_permission(self.request.user, "alsijil.view_week"):
-            self.fields["teacher"].queryset = self.fields["teacher"].queryset.filter(pk=self.request.user.person.pk)
+            teacher_qs = teacher_qs.filter(pk=person.pk)
+
+        self.fields["teacher"].queryset = teacher_qs
 
 
 PersonalNoteFormSet = forms.modelformset_factory(