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 8fab650
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
4 changes: 3 additions & 1 deletion CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ New features:

Bug fixes:

- ...
- Multivalue FREEBUSY property is now parsed properly
Ref: #27
[jacadzaca]

5.0.10 (unreleased)
-------------------
Expand Down
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 8fab650

Please sign in to comment.