Repeated events

This commit is contained in:
giuliof 2020-12-05 22:16:36 +01:00
parent 799c458107
commit 875570e962
1 changed files with 21 additions and 19 deletions

View File

@ -108,7 +108,28 @@ def getEvents(baseDay, interval):
# but nobody cares
if k[0] == "BEGIN":
blockParsing = k[1]
if blockParsing == "VEVENT":
event_dict = {}
elif k[0] == "END":
if k[1] == "VEVENT":
# If single event push into list
if repetition['single'] == True:
events += [event_dict]
else:
event_count = 1
# Get first event inside interval
while event_dict['DATETIME'] < leftLimit:
event_dict['DATETIME'] += rd.relativedelta(days=repetition['freq']['DAILY'],weeks=repetition['freq']['WEEKLY'],months=repetition['freq']['MONTHLY'],years=repetition['freq']['YEARLY'])*repetition['interval']
event_count += 1
# Push all events inside interval
while event_dict['DATETIME'] < rightLimit and (repetition['until'] is None or repetition['until'] >= event_dict['DATETIME'].date()):
event_dict['OCCURRENCE'] = event_count
events += [event_dict.copy()]
if repetition['count'] == event_count:
break
event_count+=1
event_dict['DATETIME'] += rd.relativedelta(days=repetition['freq']['DAILY'],weeks=repetition['freq']['WEEKLY'],months=repetition['freq']['MONTHLY'],years=repetition['freq']['YEARLY'])*repetition['interval']
blockParsing = None
else:
if blockParsing == "VEVENT":
@ -165,25 +186,6 @@ def getEvents(baseDay, interval):
event_dict['CLASS'] = k[1]
elif k[0] == 'STATUS':
event_dict['STATUS'] = k[1]
# If single event push into list
if repetition['single'] == True:
events += [event_dict]
else:
event_count = 1
# Get first event inside interval
while event_dict['DATETIME'] < leftLimit:
event_dict['DATETIME'] += rd.relativedelta(days=repetition['freq']['DAILY'],weeks=repetition['freq']['WEEKLY'],months=repetition['freq']['MONTHLY'],years=repetition['freq']['YEARLY'])*repetition['interval']
event_count += 1
# Push all events inside interval
while event_dict['DATETIME'] < rightLimit and (repetition['until'] is None or repetition['until'] >= event_dict['DATETIME'].date()):
event_dict['OCCURRENCE'] = event_count
events += [event_dict.copy()]
if repetition['count'] == event_count:
break
event_count+=1
event_dict['DATETIME'] += rd.relativedelta(days=repetition['freq']['DAILY'],weeks=repetition['freq']['WEEKLY'],months=repetition['freq']['MONTHLY'],years=repetition['freq']['YEARLY'])*repetition['interval']
# Thanks stackoverflow
# Return events sorted by date, AllDay first