1.1 --- a/imiptools/data.py Sun Aug 02 19:36:33 2015 +0200
1.2 +++ b/imiptools/data.py Sun Aug 02 19:36:44 2015 +0200
1.3 @@ -614,7 +614,7 @@
1.4 # Attempt to get time zone details from the object, using the supplied zone
1.5 # only as a fallback.
1.6
1.7 - tzid = obj.get_tzid() or tzid
1.8 + obj_tzid = obj.get_tzid()
1.9
1.10 if not rrule:
1.11 periods = [RecurringPeriod(dtstart, dtend, tzid, "DTSTART", dtstart_attr, dtend_attr)]
1.12 @@ -631,14 +631,14 @@
1.13
1.14 until = parameters.get("UNTIL")
1.15 if until:
1.16 - end = min(to_timezone(get_datetime(until, dtstart_attr), tzid), end)
1.17 + end = min(to_timezone(get_datetime(until, dtstart_attr), obj_tzid), end)
1.18 inclusive = True
1.19
1.20 for recurrence_start in selector.materialise(dtstart, end, parameters.get("COUNT"), parameters.get("BYSETPOS"), inclusive):
1.21 create = len(recurrence_start) == 3 and date or datetime
1.22 - recurrence_start = to_timezone(create(*recurrence_start), tzid)
1.23 + recurrence_start = to_timezone(create(*recurrence_start), obj_tzid)
1.24 recurrence_end = recurrence_start + duration
1.25 - periods.append(RecurringPeriod(recurrence_start, recurrence_end, tzid, "RRULE"))
1.26 + periods.append(RecurringPeriod(recurrence_start, recurrence_end, tzid, "RRULE", dtstart_attr))
1.27
1.28 else:
1.29 periods = []
1.30 @@ -660,14 +660,14 @@
1.31
1.32 # Exclude exception dates.
1.33
1.34 - exdates = obj.get_date_values("EXDATE", tzid)
1.35 + exdates = obj.get_date_value_items("EXDATE", tzid)
1.36
1.37 if exdates:
1.38 - for exdate in exdates:
1.39 + for exdate, exdate_attr in exdates:
1.40 if isinstance(exdate, tuple):
1.41 - period = Period(exdate[0], exdate[1], tzid)
1.42 + period = RecurringPeriod(exdate[0], exdate[1], tzid, "EXDATE", exdate_attr)
1.43 else:
1.44 - period = Period(exdate, exdate + duration, tzid)
1.45 + period = RecurringPeriod(exdate, exdate + duration, tzid, "EXDATE", exdate_attr)
1.46 i = bisect_left(periods, period)
1.47 while i < len(periods) and periods[i] == period:
1.48 del periods[i]