From 3fe5b6e05599930073223428cd95ca710a45ad52 Mon Sep 17 00:00:00 2001
From: Lloyd Meins <git@lloydmeins.de>
Date: Sun, 16 May 2021 14:31:28 +0200
Subject: [PATCH] Enable personal configuration of default in personal
 preferences

---
 aleksis/apps/alsijil/preferences.py |  8 ++++++++
 aleksis/apps/alsijil/views.py       | 11 +++++++++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index 3ad751865..e04e7c1da 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 c691996fa..23c2810e7 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
-- 
GitLab