Petites optimisations

See #294
This commit is contained in:
Jean-Marie Favreau 2025-01-31 20:02:52 +01:00
parent 366b9af74c
commit b7fb27061d

View File

@ -89,9 +89,9 @@ class DayInCalendar:
def _add_event_internal(self, event):
from .models import Category
from copy import deepcopy
from copy import copy
# copy event
local_event = deepcopy(event)
local_event = copy(event)
# set values
if local_event.start_day != self.date:
@ -264,7 +264,7 @@ class CalendarList:
| Q(recurrence_dtend__lt=startdatetime)
)
)
| (Q(start_day__lte=self.c_firstdate) & (Q(end_day__isnull=True) | Q(end_day__gte=self.c_firstdate)))
| (Q(start_day__lte=self.c_lastdate) & ((Q(end_day__isnull=True) & Q(start_day__gte=self.c_firstdate)) | Q(end_day__gte=self.c_firstdate)))
).filter(
Q(other_versions__isnull=True) |
Q(other_versions__representative=F('pk')) |
@ -283,6 +283,14 @@ class CalendarList:
lastdate = timezone.make_aware(lastdate, timezone.get_default_timezone())
for e in self.events:
if e.recurrences is None:
if e.end_day is None:
if e.start_day >= self.firstdate and e.start_day < self.lastdate:
self.calendar_days[e.start_day.__str__()].add_event(e)
else:
for d in daterange(max(e.start_day, self.firstdate), min(e.end_day, self.lastdate)):
self.calendar_days[d.__str__()].add_event(e)
else:
for e_rec in e.get_recurrences_between(firstdate, lastdate):
end = e_rec.start_day if e_rec.end_day is None else e_rec.end_day
for d in daterange(max(e_rec.start_day, self.firstdate), min(end, self.lastdate)):