From 10a1dec4482fae5844947c79e4f63a657bd5f11b Mon Sep 17 00:00:00 2001 From: Stefan Hacker Date: Mon, 13 Apr 2026 09:22:24 +0200 Subject: [PATCH] fix(calendar): wiederkehrende Termine nicht per Range filtern Master-Event eines Serientermins liegt oft vor dem sichtbaren Bereich - das FullCalendar-RRULE-Plugin braucht ihn trotzdem zur Expansion. Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app/api/calendar.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/backend/app/api/calendar.py b/backend/app/api/calendar.py index 6e9d355..cb66043 100644 --- a/backend/app/api/calendar.py +++ b/backend/app/api/calendar.py @@ -209,16 +209,25 @@ def list_events(cal_id): end = request.args.get('end') query = CalendarEvent.query.filter_by(calendar_id=cal_id) + # Wiederkehrende Termine duerfen nicht per Range gefiltert werden - + # die FullCalendar-RRULE-Plugin-Expansion im Frontend braucht den + # Master-Event auch wenn dessen dtstart vor dem sichtbaren Bereich liegt. if start: try: start_dt = datetime.fromisoformat(start) - query = query.filter(CalendarEvent.dtend >= start_dt) + query = query.filter(db.or_( + CalendarEvent.recurrence_rule.isnot(None), + CalendarEvent.dtend >= start_dt, + )) except ValueError: pass if end: try: end_dt = datetime.fromisoformat(end) - query = query.filter(CalendarEvent.dtstart <= end_dt) + query = query.filter(db.or_( + CalendarEvent.recurrence_rule.isnot(None), + CalendarEvent.dtstart <= end_dt, + )) except ValueError: pass