From 0544f72c5e7d8cf6aadb600cfb43e94a9cf875d4 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Fri, 15 Mar 2024 11:10:57 +0100 Subject: [PATCH] Add default color for calendar feeds --- aleksis/apps/chronos/models.py | 11 +++++++++- aleksis/apps/chronos/preferences.py | 32 ++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index 7a4701cb..bf4b3f86 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -67,7 +67,7 @@ from aleksis.core.mixins import ( SchoolTermRelatedExtensibleModel, ) from aleksis.core.models import CalendarEvent, DashboardWidget, Group, Person, Room, SchoolTerm -from aleksis.core.util.core_helpers import has_person +from aleksis.core.util.core_helpers import get_site_preferences, has_person class ValidityRange(ExtensibleModel): @@ -1476,6 +1476,10 @@ class LessonEvent(CalendarEvent): """Get the description of the lesson event.""" return render_to_string("chronos/lesson_event_description.txt", {"event": reference_object}) + @classmethod + def get_color(cls, request: HttpRequest | None = None) -> str: + return get_site_preferences()["chronos__lesson_color"] + @classmethod def value_color(cls, reference_object: LessonEvent, request: HttpRequest | None = None) -> str: """Get the color of the lesson event.""" @@ -1522,6 +1526,7 @@ class LessonEvent(CalendarEvent): "amends": cls.value_meta(reference_object.amends, request) if reference_object.amends else None, + "title": reference_object.title, "teachers": [ { "id": t.pk, @@ -1627,6 +1632,10 @@ class SupervisionEvent(LessonEvent): "chronos/supervision_event_description.txt", {"event": reference_object} ) + @classmethod + def get_color(cls, request: HttpRequest | None = None) -> str: + return get_site_preferences()["chronos__supervision_color"] + @classmethod def get_objects( cls, request: HttpRequest | None = None, params: dict[str, any] | None = None diff --git a/aleksis/apps/chronos/preferences.py b/aleksis/apps/chronos/preferences.py index 5fac608e..d319001c 100644 --- a/aleksis/apps/chronos/preferences.py +++ b/aleksis/apps/chronos/preferences.py @@ -2,8 +2,14 @@ from datetime import time from django.utils.translation import gettext_lazy as _ +from colorfield.widgets import ColorWidget from dynamic_preferences.preferences import Section -from dynamic_preferences.types import BooleanPreference, IntegerPreference, TimePreference +from dynamic_preferences.types import ( + BooleanPreference, + IntegerPreference, + StringPreference, + TimePreference, +) from aleksis.core.registries import person_preferences_registry, site_preferences_registry @@ -107,3 +113,27 @@ class SendNotificationsPerson(BooleanPreference): name = "send_notifications" default = True verbose_name = _("Send notifications for current timetable changes") + + +@site_preferences_registry.register +class LessonEventFeedColor(StringPreference): + """Color for the lesson calendar feed.""" + + section = chronos + name = "lesson_color" + default = "#a7ffeb" + verbose_name = _("Lesson calendar feed color") + widget = ColorWidget + required = True + + +@site_preferences_registry.register +class SupervisionEventFeedColor(StringPreference): + """Color for the supervision calendar feed.""" + + section = chronos + name = "supervision_color" + default = "#e6ee9c" + verbose_name = _("Supervision calendar feed color") + widget = ColorWidget + required = True -- GitLab