From ff3776c291252c9fa64609319a2e3e4f10205078 Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Sun, 9 Jan 2022 13:51:51 +0100
Subject: [PATCH] Set start date of current SchoolTerm as default value for
 personal note filter

---
 CHANGELOG.rst                   |  5 +++++
 aleksis/apps/alsijil/filters.py | 17 ++++++++++++++---
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index a7288ab1e..31ee41cc4 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_.
 Unreleased
 ----------
 
+Changed
+~~~~~~~
+
+* Use start date of current SchoolTerm as default value for PersonalNote filter in overview.
+
 `2.0rc7` - 2021-12-25
 ---------------------
 
diff --git a/aleksis/apps/alsijil/filters.py b/aleksis/apps/alsijil/filters.py
index 4033e36e5..0149a337b 100644
--- a/aleksis/apps/alsijil/filters.py
+++ b/aleksis/apps/alsijil/filters.py
@@ -3,16 +3,27 @@ from django.utils.translation import gettext as _
 from django_filters import CharFilter, DateFilter, FilterSet
 from material import Layout, Row
 
+from aleksis.core.models import SchoolTerm
+
 from .models import PersonalNote
 
 
 class PersonalNoteFilter(FilterSet):
-    day_start = DateFilter(lookup_expr="gte", label=_("After"))
+    day_start = DateFilter(
+        lookup_expr="gte", label=_("After"), initial=SchoolTerm.current.date_start
+    )
     day_end = DateFilter(lookup_expr="lte", label=_("Before"))
     subject = CharFilter(lookup_expr="icontains", label=_("Subject"))
 
-    def __init__(self, *args, **kwargs):
-        super().__init__(*args, **kwargs)
+    def __init__(self, data=None, *args, **kwargs):
+        if data is not None:
+            data = data.copy()
+            for name, f in self.base_filters.items():
+                initial = f.extra.get("initial")
+                if not data.get(name) and initial:
+                    data[name] = initial
+
+        super().__init__(data, *args, **kwargs)
         self.form.fields["late__lt"].label = _("Tardiness is lower than")
         self.form.fields["late__gt"].label = _("Tardiness is bigger than")
         self.form.layout = Layout(
-- 
GitLab