diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py index 3ad751865f0534a156fd8ea7f9bfc0b558a467f8..e04e7c1da250e23fdcd7d2ef6978ef7d2cfa7602 100644 --- a/aleksis/apps/alsijil/preferences.py +++ b/aleksis/apps/alsijil/preferences.py @@ -124,3 +124,11 @@ class RegisterObjectsTableItemsPerPage(IntegerPreference): def validate(self, value): if value < 1: raise ValidationError(_("Each page must show at least one item.")) + + +@person_preferences_registry.register +class DefaultLessonDocumentationFilter(BooleanPreference): + section = alsijil + name = "default_lesson_documentation_filter" + default = True + verbose_name = _("Filter lessons by existence of their lesson documentation on default") diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index c691996fabe5ca8dbd441bb96bc24f4d1868329a..23c2810e78962cee1f0d5ad182f3936d6eef7ff2 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -946,11 +946,18 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp context["extra_marks"] = extra_marks # Build filter with own form and logic as django-filter can't work with different models + if request.user.person.preferences["alsijil__default_lesson_documentation_filter"]: + default_documentation = False + else: + default_documentation = None + filter_form = FilterRegisterObjectForm( - request, request.GET or None, for_person=True, default_documentation=False + request, request.GET or None, for_person=True, default_documentation=default_documentation ) filter_dict = ( - filter_form.cleaned_data if filter_form.is_valid() else {"has_documentation": False} + filter_form.cleaned_data + if filter_form.is_valid() + else {"has_documentation": default_documentation} ) filter_dict["person"] = person context["filter_form"] = filter_form