From 99bd10ddaa4964af7d6fe2b19da4206a90499f9d Mon Sep 17 00:00:00 2001
From: Michael Bauer <michael-bauer@posteo.de>
Date: Fri, 4 Apr 2025 22:04:33 +0200
Subject: [PATCH] Guard real_datetime_start/end against None-value

---
 CHANGELOG.rst          | 1 +
 aleksis/core/models.py | 8 ++++----
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index bcf881480..0171b7778 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 b0cbc0c09..bb6e29a59 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)
-- 
GitLab