mirror of
https://github.com/open-webui/open-webui.git
synced 2026-10-05 02:41:34 +00:00
fix: repeating calendar events are missing when they began before the visible dates (#31606)
A repeating event that was still running when the visible dates began was left out of the calendar. A weekly event from 23:00 to 01:00, for example, did not show on the following day, while the same event without a repeat did. Repeating events are now shown whenever any part of them falls within the visible dates. Fixes #31605
This commit is contained in:
parent
176d31d1db
commit
ad01bca2b0
1 changed files with 6 additions and 3 deletions
|
|
@ -40,7 +40,6 @@ def expand_recurring_event(
|
|||
|
||||
range_start = to_local_datetime(range_start_ns)
|
||||
range_end = to_local_datetime(range_end_ns)
|
||||
scan_start = range_start - dt.timedelta(days=1)
|
||||
|
||||
original_start_ns = event_dict['start_at']
|
||||
original_start = to_local_datetime(original_start_ns)
|
||||
|
|
@ -55,6 +54,9 @@ def expand_recurring_event(
|
|||
|
||||
original_end_ns = event_dict.get('end_at')
|
||||
duration_ns = (original_end_ns - original_start_ns) if original_end_ns else None
|
||||
# Look back by the event length so occurrences still running at range start are found
|
||||
event_length = dt.timedelta(microseconds=max(duration_ns or 0, 0) // 1000)
|
||||
scan_start = range_start - dt.timedelta(days=1) - event_length
|
||||
|
||||
instances = []
|
||||
previous_start = None
|
||||
|
|
@ -64,12 +66,13 @@ def expand_recurring_event(
|
|||
previous_start = occurrence_start
|
||||
|
||||
instance_start_ns = int(occurrence_start.replace(tzinfo=user_timezone).timestamp() * 1_000_000_000)
|
||||
instance_end_ns = (instance_start_ns + duration_ns) if duration_ns else None
|
||||
|
||||
if instance_start_ns >= range_start_ns:
|
||||
if instance_start_ns >= range_start_ns or (instance_end_ns and instance_end_ns > range_start_ns):
|
||||
instance = {
|
||||
**event_dict,
|
||||
'start_at': instance_start_ns,
|
||||
'end_at': (instance_start_ns + duration_ns) if duration_ns else None,
|
||||
'end_at': instance_end_ns,
|
||||
'instance_id': f'{event_dict["id"]}_{instance_start_ns}',
|
||||
}
|
||||
instances.append(instance)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue