cctool

A tool for managing contacts and calendars.
git clone https://git.ce9e.org/cctool.git

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):