Fix: Korrekte Endzeiten für recurring Events

- parse_times erkennt jetzt recurring Events (dauertermin=1 + turnus/turnusArt > 0)
- Für recurring Events wird das Ende aus dem gleichen Tag wie Start berechnet
- datumBis wird nur noch für die RRULE-Serie verwendet, nicht für jeden Termin
- Fix für Termin 84389: Statt 15-Tage-Terminen jetzt korrekte 30-Minuten-Termine
This commit is contained in:
root
2025-10-24 19:48:12 +00:00
parent d154ba8172
commit 2bf37b8616

View File

@@ -233,8 +233,17 @@ def parse_times(data, source):
start_time = data.get('uhrzeitVon') or '09:00:00'
start_dt = BERLIN_TZ.localize(datetime.datetime.fromisoformat(f"{start_str}T{start_time}"))
# Check if this is a recurring event
is_recurring = (data.get('dauertermin', 0) == 1 and
(data.get('turnus', 0) > 0 or data.get('turnusArt', 0) > 0))
if is_recurring:
# For recurring events, end date is same as start date (each instance ends on same day)
end_date_str = data.get('datum', '')
else:
# Use datumBis for end date if available, otherwise datum
end_date_str = data.get('datumBis', data.get('datum', ''))
if 'T' in end_date_str:
base_end_date = end_date_str.split('T')[0]
else: