diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py index 88127e98c45d71fbe22ec9572fc04d89891489a7..50d8c25793ae916c8453594b61c2119619a648ab 100644 --- a/aleksis/apps/alsijil/forms.py +++ b/aleksis/apps/alsijil/forms.py @@ -8,6 +8,7 @@ from django.utils.translation import gettext_lazy as _ from django_select2.forms import Select2Widget from material import Layout, Row +from aleksis.core.util.core_helpers import queryset_rules_filter from aleksis.apps.chronos.managers import TimetableType from aleksis.core.models import Group, Person @@ -108,6 +109,12 @@ class RegisterAbsenceForm(forms.Form): excused = forms.BooleanField(label=_("Excused"), initial=True, required=False) remarks = forms.CharField(label=_("Remarks"), max_length=30, required=False) + def __init__(self, *args, **kwargs): + self.request = kwargs.pop("request") + super().__init__(*args, **kwargs) + self.fields["person"].queryset = queryset_rules_filter(self.request, Person.objects.all(), + "core.register_absence") + class PersonalNoteFilterForm(forms.ModelForm): layout = Layout(Row("identifier", "description"), Row("regex")) diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index efad0b58c07a8c87cd258e14f728f71c9340786a..f8fb823a3c407f4209d0de506ebf6ab737c1b01c 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -396,7 +396,7 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse: def register_absence(request: HttpRequest) -> HttpResponse: context = {} - register_absence_form = RegisterAbsenceForm(request.POST or None) + register_absence_form = RegisterAbsenceForm(request.POST or None, request=request) if request.method == "POST": if register_absence_form.is_valid():