From 43f115f51162aca603ae536fa7c1440f470282bf Mon Sep 17 00:00:00 2001
From: magicfelix <felix@felix-zauberer.de>
Date: Sun, 7 Aug 2022 12:39:57 +0200
Subject: [PATCH] Add week documentation preference and carry over for
 CourseBook

---
 aleksis/apps/alsijil/preferences.py | 10 ++++++++++
 aleksis/apps/alsijil/schema.py      | 14 ++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index 2fd34fa7f..756c27494 100644
--- a/aleksis/apps/alsijil/preferences.py
+++ b/aleksis/apps/alsijil/preferences.py
@@ -80,6 +80,16 @@ class AllowCarryOverLessonDocumentationToCurrentWeek(BooleanPreference):
     )
 
 
+@site_preferences_registry.register
+class DocumentLessonTopicsByWeek(BooleanPreference):
+    section = alsijil
+    name = "document_lesson_topics_by_week"
+    default = False
+    verbose_name = _(
+        "Document lesson topics per week instead of per lesson period"
+    )
+
+
 @site_preferences_registry.register
 class CarryOverPersonalNotesToNextPeriods(BooleanPreference):
     section = alsijil
diff --git a/aleksis/apps/alsijil/schema.py b/aleksis/apps/alsijil/schema.py
index 7e88e6971..04161e64c 100644
--- a/aleksis/apps/alsijil/schema.py
+++ b/aleksis/apps/alsijil/schema.py
@@ -5,6 +5,7 @@ from graphene_django import DjangoObjectType
 
 from aleksis.apps.chronos.models import Lesson
 from aleksis.core.models import Group, Person
+from aleksis.core.util.core_helpers import get_site_preferences
 
 from .models import (
     Event,
@@ -112,6 +113,19 @@ class LessonDocumentationMutation(graphene.Mutation):
 
         lesson_documentation.save()
 
+        if (
+            get_site_preferences()["alsijil__document_lesson_topics_by_week"]
+            and (
+                lesson_documentation.topic
+                or lesson_documentation.homework
+                or lesson_documentation.group_note
+            )
+            and lesson_documentation.lesson_period
+        ):
+            lesson_documentation.carry_over_data(
+                LessonPeriod.objects.filter(lesson=lesson_documentation.lesson_period.lesson)
+            )
+
         return LessonDocumentationMutation(lesson_documentation=lesson_documentation)
 
 
-- 
GitLab