1.1 --- a/imiptools/data.py Sat May 16 20:03:34 2015 +0200
1.2 +++ b/imiptools/data.py Sun May 17 00:14:36 2015 +0200
1.3 @@ -43,6 +43,14 @@
1.4 def __init__(self, fragment):
1.5 self.objtype, (self.details, self.attr) = fragment.items()[0]
1.6
1.7 + def get_uid(self):
1.8 + return self.get_value("UID")
1.9 +
1.10 + def get_recurrenceid(self):
1.11 + return format_datetime(self.get_utc_datetime("RECURRENCE-ID"))
1.12 +
1.13 + # Structure access.
1.14 +
1.15 def copy(self):
1.16 return Object(to_dict(self.to_node()))
1.17
1.18 @@ -117,7 +125,7 @@
1.19 # Computed results.
1.20
1.21 def has_recurrence(self, tzid, recurrence):
1.22 - recurrences = [p.start for p in get_periods(self, tzid, recurrence, inclusive=True)]
1.23 + recurrences = [p.get_start() for p in get_periods(self, tzid, recurrence, inclusive=True)]
1.24 return recurrence in recurrences
1.25
1.26 def get_periods(self, tzid, end):
1.27 @@ -511,8 +519,8 @@
1.28
1.29 def __call__(self, first, second):
1.30 return cmp(
1.31 - (to_datetime(first.start, self.tzid), to_datetime(first.end, self.tzid)),
1.32 - (to_datetime(second.start, self.tzid), to_datetime(second.end, self.tzid))
1.33 + (to_datetime(first.get_start(), self.tzid), to_datetime(first.get_end(), self.tzid)),
1.34 + (to_datetime(second.get_start(), self.tzid), to_datetime(second.get_end(), self.tzid))
1.35 )
1.36
1.37 def get_periods_for_freebusy(obj, periods, tzid):
1.38 @@ -522,21 +530,12 @@
1.39 using the indicated 'tzid' to convert dates to datetimes.
1.40 """
1.41
1.42 - start, start_attr = obj.get_datetime_item("DTSTART")
1.43 - if obj.has_key("DTEND"):
1.44 - end, end_attr = obj.get_datetime_item("DTEND")
1.45 - elif obj.has_key("DURATION"):
1.46 - duration = obj.get_duration("DURATION")
1.47 - end = start + duration
1.48 - else:
1.49 - end, end_attr = start, start_attr
1.50 -
1.51 - tzid = get_tzid(start_attr, end_attr) or tzid
1.52 + tzid = obj.get_tzid() or tzid
1.53
1.54 l = []
1.55
1.56 for p in periods:
1.57 - start, end = get_freebusy_period(p.start, p.end, tzid)
1.58 + start, end = get_freebusy_period(p.get_start(), p.get_end(), tzid)
1.59 start, end = [to_timezone(x, "UTC") for x in start, end]
1.60
1.61 # Create a new period for free/busy purposes with the converted