From 30942148e2cc9e392938867244dfceeddb584f1e Mon Sep 17 00:00:00 2001 From: Hangzhi Yu <hangzhi@protonmail.com> Date: Sun, 2 Feb 2025 19:42:51 +0100 Subject: [PATCH] Fix handling of all day events in backend and frontend --- aleksis/core/frontend/components/calendar/Calendar.vue | 5 ++++- aleksis/core/models.py | 7 ++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/aleksis/core/frontend/components/calendar/Calendar.vue b/aleksis/core/frontend/components/calendar/Calendar.vue index d8fcdfe39..511af38d5 100644 --- a/aleksis/core/frontend/components/calendar/Calendar.vue +++ b/aleksis/core/frontend/components/calendar/Calendar.vue @@ -217,7 +217,10 @@ export default { .flatMap((cf) => cf.events.map((event) => { const start = this.$parseISODate(event.start); - const end = this.$parseISODate(event.end); + let end = this.$parseISODate(event.end); + if (event.allDay) { + end = end.minus({ days: 1 }); + } return { ...event, category: cf.verboseName, diff --git a/aleksis/core/models.py b/aleksis/core/models.py index a080955bf..fcf9384b2 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -1561,11 +1561,8 @@ class CalendarEvent(CalendarEventMixin, ExtensiblePolymorphicModel, RecurrenceMo """Return the end datetime of the calendar event.""" if reference_object.datetime_end: return reference_object.datetime_end.astimezone(reference_object.timezone) - if reference_object.date_end == reference_object.date_start: - # Rule for all day events: If the event is only one day long, - # the end date has to be empty - return None - return reference_object.date_end + # RFC 5545 states that the end date is not inclusive + return reference_object.date_end + timedelta(days=1) @classmethod def value_rrule( -- GitLab