Skip to content

Commit

Permalink
multivalue FREEBUSY parses properly
Browse files Browse the repository at this point in the history
  • Loading branch information
jacadzaca committed Sep 30, 2023
1 parent f359682 commit 3d04737
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions src/icalendar/cal.py
Original file line number Diff line number Diff line change
Expand Up @@ -375,19 +375,26 @@ def from_ical(cls, st, multiple=False):
if not component:
raise ValueError(f'Property "{name}" does not have a parent component.')
datetime_names = ('DTSTART', 'DTEND', 'RECURRENCE-ID', 'DUE',
'FREEBUSY', 'RDATE', 'EXDATE')
'RDATE', 'EXDATE')
try:
if name in datetime_names and 'TZID' in params:
vals = factory(factory.from_ical(vals, params['TZID']))
if name == 'FREEBUSY':
vals = vals.split(',')
if 'TZID' in params:
parsed_components = [factory(factory.from_ical(val, params['TZID'])) for val in vals]
else:
parsed_components = [factory(factory.from_ical(val)) for val in vals]
elif name in datetime_names and 'TZID' in params:
parsed_components = [factory(factory.from_ical(vals, params['TZID']))]
else:
vals = factory(factory.from_ical(vals))
parsed_components = [factory(factory.from_ical(vals))]
except ValueError as e:
if not component.ignore_exceptions:
raise
component.errors.append((uname, str(e)))
else:
vals.params = params
component.add(name, vals, encode=0)
for parsed_component in parsed_components:
parsed_component.params = params
component.add(name, parsed_component, encode=0)

if multiple:
return comps
Expand Down

0 comments on commit 3d04737

Please sign in to comment.