# HG changeset patch # User Paul Boddie # Date 1427045794 -3600 # Node ID cb30cdfe54b028099b030676dbd88b33fbd1c290 # Parent ce8dd6f08eef5b3d74e6ea97611c443e062836d9 Handle RDATE and EXDATE properties without TZID information (even if it was originally provided to the recipient who has subsequently stripped it from these properties and returned the object in this arguably damaged state). diff -r ce8dd6f08eef -r cb30cdfe54b0 imiptools/data.py --- a/imiptools/data.py Tue Mar 10 23:07:43 2015 +0100 +++ b/imiptools/data.py Sun Mar 22 18:36:34 2015 +0100 @@ -60,12 +60,12 @@ def get_utc_datetime(self, name): return get_utc_datetime(self.details, name) - def get_item_values(self, name): - items = get_item_value_items(self.details, name) + def get_date_values(self, name, tzid=None): + items = get_date_value_items(self.details, name, tzid) return items and [value for value, attr in items] - def get_item_value_items(self, name): - return get_item_value_items(self.details, name) + def get_date_value_items(self, name, tzid=None): + return get_date_value_items(self.details, name, tzid) def get_datetime(self, name): dt, attr = get_datetime_item(self.details, name) @@ -266,7 +266,7 @@ def get_value(d, name): return get_values(d, name, False) -def get_item_value_items(d, name): +def get_date_value_items(d, name, tzid=None): """ Obtain items from 'd' having the given 'name', where a single item yields @@ -279,6 +279,8 @@ all_items = [] for item in items: values, attr = item + if not attr.has_key("TZID") and tzid: + attr["TZID"] = tzid if not isinstance(values, list): values = [values] for value in values: @@ -403,7 +405,7 @@ # Add recurrence dates. periods = set(periods) - rdates = obj.get_item_values("RDATE") + rdates = obj.get_date_values("RDATE", tzid) if rdates: for rdate in rdates: @@ -414,7 +416,7 @@ # Exclude exception dates. - exdates = obj.get_item_values("EXDATE") + exdates = obj.get_date_values("EXDATE", tzid) if exdates: for exdate in exdates: