From 0d6400b43ffd15f9a73b066e9071586f729c2e4f Mon Sep 17 00:00:00 2001 From: Hangzhi Yu <hangzhi@protonmail.com> Date: Sat, 18 Jul 2020 01:30:50 +0200 Subject: [PATCH] Filter possible selection in absence form --- aleksis/apps/alsijil/forms.py | 7 +++++++ aleksis/apps/alsijil/views.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py index 88127e98c..50d8c2579 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 efad0b58c..f8fb823a3 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(): -- GitLab