diff --git a/src/agenda_culturel/calendar.py b/src/agenda_culturel/calendar.py index 8248c79..1804b52 100644 --- a/src/agenda_culturel/calendar.py +++ b/src/agenda_culturel/calendar.py @@ -256,15 +256,19 @@ class CalendarList: startdatetime = timezone.make_aware(datetime.combine(self.c_firstdate, time.min), timezone.get_default_timezone()) lastdatetime = timezone.make_aware(datetime.combine(self.c_lastdate, time.max), timezone.get_default_timezone()) qs = qs.filter( - (Q(recurrence_dtend__isnull=True) & Q(recurrence_dtstart__lte=lastdatetime)) - | ( - Q(recurrence_dtend__isnull=False) - & ~( - Q(recurrence_dtstart__gt=lastdatetime) - | Q(recurrence_dtend__lt=startdatetime) + (Q(recurrences__isnull=False) & + (Q(recurrence_dtend__isnull=True) & Q(recurrence_dtstart__isnull=False) & Q(recurrence_dtstart__lte=lastdatetime)) + | ( + Q(recurrence_dtend__isnull=False) + & ~( + Q(recurrence_dtstart__gt=lastdatetime) + | Q(recurrence_dtend__lt=startdatetime) + ) ) ) - | (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))) + | (Q(start_day__lte=self.c_lastdate) & # start before the end of the desired period + ((Q(end_day__isnull=True) & Q(start_day__gte=self.c_firstdate)) # end after the begining of desired period + | (Q(end_day__isnull=False) & Q(end_day__gte=self.c_firstdate)))) ).filter( Q(other_versions__isnull=True) | Q(other_versions__representative=F('pk')) |