From 05dcffa950bd4e38080fc230c8c2a809dd3e9aa6 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Wed, 7 Jun 2023 18:02:10 +0200 Subject: [PATCH] Make descriptions of LessonEvents compatible with substitutions --- aleksis/apps/chronos/models.py | 50 +++++++++++++++++++ .../chronos/lesson_event_description.txt | 10 ++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index c40c6010..24815bb9 100644 --- a/aleksis/apps/chronos/models.py +++ b/aleksis/apps/chronos/models.py @@ -1430,6 +1430,56 @@ class LessonEvent(CalendarEvent): def room_names(self: "LessonEvent") -> str: return ", ".join([r.name for r in self.rooms.all()]) + @property + def room_names_with_amends(self: "LessonEvent") -> str: + my_room_names = self.room_names + amended_room_names = self.real_amends.room_names if self.amends else "" + + if my_room_names and amended_room_names: + return _("{} (instead of {})").format(my_room_names, amended_room_names) + elif not my_room_names and amended_room_names: + return amended_room_names + return my_room_names + + @property + def group_names_with_amends(self: "LessonEvent") -> str: + my_group_names = self.group_names + amended_group_names = self.real_amends.group_names if self.amends else "" + + if my_group_names and amended_group_names: + return _("{} (instead of {})").format(my_group_names, amended_group_names) + elif not my_group_names and amended_group_names: + return amended_group_names + return my_group_names + + @property + def teacher_names_with_amends(self: "LessonEvent") -> str: + my_teacher_names = self.teacher_names + amended_teacher_names = self.real_amends.teacher_names if self.amends else "" + + if my_teacher_names and amended_teacher_names: + return _("{} (instead of {})").format(my_teacher_names, amended_teacher_names) + elif not my_teacher_names and amended_teacher_names: + return amended_teacher_names + return my_teacher_names + + @property + def subject_name_with_amends(self: "LessonEvent") -> str: + my_subject = self.subject.name + amended_subject = self.real_amends.subject.name if self.amends else "" + + if my_subject and amended_subject: + return _("{} (instead of {})").format(my_subject, amended_subject) + elif not my_subject and amended_subject: + return amended_subject + return my_subject + + @property + def real_amends(self: "LessonEvent") -> "LessonEvent": + if self.amends: + return LessonEvent.objects.get(pk=self.amends.pk) + return self + @classmethod def value_title(cls, reference_object: "LessonEvent", request) -> str: """Get the title of the event.""" diff --git a/aleksis/apps/chronos/templates/chronos/lesson_event_description.txt b/aleksis/apps/chronos/templates/chronos/lesson_event_description.txt index db81aa0a..055eb824 100644 --- a/aleksis/apps/chronos/templates/chronos/lesson_event_description.txt +++ b/aleksis/apps/chronos/templates/chronos/lesson_event_description.txt @@ -1,4 +1,6 @@ -{% load i18n %}{% trans "Groups" %}: {{ event.group_names }} -{% trans "Subject" %}: {{ event.subject }} -{% trans "Teachers" %}: {{ event.teacher_names }} -{% trans "Rooms" %}: {{ event.room_names }} \ No newline at end of file +{% load i18n %}{% trans "Groups" %}: {{ event.group_names_with_amends|default:"–" }}{% if event.subject %} +{% trans "Subject" %}: {{ event.subject_name_with_amends }}{% endif %} +{% trans "Teachers" %}: {{ event.teacher_names_with_amends|default:"–" }} +{% trans "Rooms" %}: {{ event.room_names_with_amends|default:"–" }}{% if event.comment %} + +{{ event.comment }}{% endif %} \ No newline at end of file -- GitLab