From 4b2bbc470bcd0aca4b605e06b2ef8d84bda0861c Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Wed, 15 Mar 2023 19:26:06 +0100 Subject: [PATCH] events: Fix last day of web calendar for full-day event In the events model, an event with an end_date but without an end_time is meant to include the last day. Fullcalendar.io, which is used for the web calendar, however, always regards the end datetime as exclusive. Add a day in the case that we have no end_time, so that the web calender includes the last day in the display. --- mpicms/events/models.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mpicms/events/models.py b/mpicms/events/models.py index 72d8c9c..819aca5 100644 --- a/mpicms/events/models.py +++ b/mpicms/events/models.py @@ -1,5 +1,5 @@ import json -from datetime import datetime, date +from datetime import datetime, date, timedelta from ics import Calendar, Event as ICSEvent from django.db import models @@ -71,10 +71,15 @@ def end(self): return self.end_date def get_dict(self, request=None): + + datetime_end = self.end + if self.end_date and not self.end_time: + datetime_end += timedelta(days = 1) + return { 'title': self.title, 'start': self.start.isoformat(), - 'end': self.end.isoformat() if self.end else None, + 'end': datetime_end.isoformat() if self.end else None, 'url': self.get_url(request=request), }