diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py index c40c6010ac323bb7950e100216a9262b6deb9cf0..24815bb9b2352b1bd8bcff6e51bb635008b2bc84 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 db81aa0a437f46ba06f7d9cf1ba95cd63d0bae9b..055eb824884250f2a229a25cbc00db49dd618afa 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