From 22e3f80d8e1041dbe6afa9b9590d214269e84dac Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sun, 2 Aug 2020 11:58:12 +0200
Subject: [PATCH] Make blocking of adding personal notes for cancelled lessons
 configurable

---
 aleksis/apps/alsijil/preferences.py              | 16 ++++++++++++++++
 .../templates/alsijil/class_register/lesson.html |  4 ++--
 aleksis/apps/alsijil/views.py                    |  6 +++++-
 3 files changed, 23 insertions(+), 3 deletions(-)
 create mode 100644 aleksis/apps/alsijil/preferences.py

diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
new file mode 100644
index 000000000..e2a55de88
--- /dev/null
+++ b/aleksis/apps/alsijil/preferences.py
@@ -0,0 +1,16 @@
+from django.utils.translation import gettext as _
+
+from dynamic_preferences.preferences import Section
+from dynamic_preferences.types import BooleanPreference
+
+from aleksis.core.registries import site_preferences_registry
+
+alsijil = Section("alsijil", verbose_name=_("Class register"))
+
+
+@site_preferences_registry.register
+class BlockPersonalNotesForCancelled(BooleanPreference):
+    section = alsijil
+    name = "block_personal_notes_for_cancelled"
+    default = True
+    verbose_name = _("Block adding personal notes for cancelled lessons")
diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html
index 6c3fe8815..9fca5de56 100644
--- a/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html
+++ b/aleksis/apps/alsijil/templates/alsijil/class_register/lesson.html
@@ -59,7 +59,7 @@
           <li class="tab">
             <a href="#lesson-documentation">{% trans "Lesson documentation" %}</a>
           </li>
-          {% if not lesson_period.get_substitution.cancelled %}
+          {% if not lesson_period.get_substitution.cancelled or not request.site.preferences.alsijil__block_personal_notes_for_cancelled %}
             <li class="tab">
               <a href="#personal-notes">{% trans "Personal notes" %}</a>
             </li>
@@ -148,7 +148,7 @@
         </div>
       </div>
 
-      {% if not lesson_period.get_substitution.cancelled %}
+      {% if not lesson_period.get_substitution.cancelled or not request.site.preferences.alsijil__block_personal_notes_for_cancelled %}
         <div class="col s12" id="personal-notes">
           <div class="card">
             <div class="card-content">
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index ed8604079..c5213e5f2 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -20,6 +20,7 @@ from aleksis.apps.chronos.util.date import week_weekday_to_date
 from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
 from aleksis.core.models import Group, Person, SchoolTerm
 from aleksis.core.util import messages
+from aleksis.core.util.core_helpers import get_site_preferences
 
 from .forms import (
     ExcuseTypeForm,
@@ -115,7 +116,10 @@ def lesson(
             messages.success(request, _("The lesson documentation has been saved."))
 
         substitution = lesson_period.get_substitution()
-        if not getattr(substitution, "cancelled", False):
+        if (
+            not getattr(substitution, "cancelled", False)
+            or not get_site_preferences()["alsijil__block_personal_notes_for_cancelled"]
+        ):
             if personal_note_formset.is_valid():
                 instances = personal_note_formset.save()
 
-- 
GitLab