- commit
- 2d8e09febfb2a53c7a025f0bdf131fa8723295ce
- parent
- 93d3f4c4c5777d60e3e6701878b4e869c08cc5cf
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2015-05-08 13:15
parse ical values
Diffstat
| M | cctool.py | 25 | +++++++++++++++++++++++-- |
1 files changed, 23 insertions, 2 deletions
diff --git a/cctool.py b/cctool.py
@@ -208,6 +208,21 @@ class ICal(Format): 208 208 yield event 209 209 210 210 @classmethod -1 211 def _decode(cls, key, value): -1 212 if isinstance(value, list): -1 213 return sum((cls._decode(key, i) for i in value), []) -1 214 else: -1 215 _value = value.from_ical(value) -1 216 if key in ['DTSTART', 'DTEND']: -1 217 if isinstance(_value, datetime) or isinstance(_value, date): -1 218 return [_value] -1 219 else: -1 220 raise ValueError(value) -1 221 else: -1 222 s = _str(_value) -1 223 return [s] if s else [] -1 224 -1 225 @classmethod 211 226 def load(cls, fh): 212 227 if isinstance(icalendar, Exception): 213 228 raise icalendar @@ -218,8 +233,14 @@ class ICal(Format): 218 233 d = MultiDict() 219 234 for key, value in event.items(): 220 235 if key.lower() in cls.fields:221 -1 d[key.lower()] = [value.from_ical(value)]222 -1 yield d-1 236 try: -1 237 _value = cls._decode(key, value) -1 238 if _value: -1 239 d[key.lower()] = _value -1 240 except ValueError: -1 241 break -1 242 else: -1 243 yield d 223 244 224 245 @classmethod 225 246 def dump(cls, data, fh):