diff --git a/CHANGELOG.rst b/CHANGELOG.rst index bcf881480e89f4fa3367223618009641010b2763..0171b77787c4731efd4a1d23d8c1cb62cf42f2a2 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,6 +14,7 @@ Fixed * It wasn't possible to run data checks due to broken color data checks. * Recurrence information for calendar events weren't removed on deletion. +* Full day events didn't work in calendar. * [Dev] AddressInputType missed country field. `4.0`_ - 2025-03-29 diff --git a/aleksis/core/models.py b/aleksis/core/models.py index b0cbc0c09af83511c1bd10cba2f297897ae16046..bb6e29a59e49b21f3477b38acb3749143f99c30b 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -1760,9 +1760,9 @@ class CalendarEvent( @property def real_datetime_start(self) -> datetime: """Get real start datetime of this event.""" - if hasattr(self, "odatetime"): + if hasattr(self, "odatetime") and self.odatetime: return self.get_in_timezone(self.odatetime) - elif hasattr(self, "odate"): + elif hasattr(self, "odate") and self.odate: return self.odate.date() elif self.datetime_start: return self.get_in_timezone(self.datetime_start) @@ -1771,11 +1771,11 @@ class CalendarEvent( @property def real_datetime_end(self) -> datetime: """Get real end datetime of this event.""" - if hasattr(self, "odatetime"): + if hasattr(self, "odatetime") and self.odatetime: return self.get_in_timezone(self.odatetime + self.duration) elif self.datetime_end: return self.get_in_timezone(self.datetime_end) - elif hasattr(self, "odate"): + elif hasattr(self, "odate") and self.odate: # RFC 5545 states that the end date is not inclusive return (self.odate + self.duration + timedelta(days=1)).date() return self.date_end + timedelta(days=1)