# HG changeset patch # User Paul Boddie # Date 1431883914 -7200 # Node ID 9824a7a3082702e1ced8d8b70aef9332c0eae1f2 # Parent 11b5c79e5a9c0f94bc8964df2def9ee8258468d3 Fix/simplify recurrence and period comparisons. diff -r 11b5c79e5a9c -r 9824a7a30827 imiptools/dates.py --- a/imiptools/dates.py Sun May 17 19:25:22 2015 +0200 +++ b/imiptools/dates.py Sun May 17 19:31:54 2015 +0200 @@ -431,13 +431,22 @@ return dtstart_attr and dtstart_attr.get("TZID") or dtend_attr and dtend_attr.get("TZID") or None -def to_recurrence_start(recurrenceid, tzid): +def get_recurrence_start(recurrenceid, tzid): """ Return 'recurrenceid' in a form suitable for comparison with free/busy start datetimes, using 'tzid' to convert recurrence identifiers that are dates. """ - return format_datetime(to_utc_datetime(get_datetime(recurrenceid), tzid)) + return to_utc_datetime(get_datetime(recurrenceid), tzid) + +def to_recurrence_start(recurrenceid, tzid): + + """ + Return 'recurrenceid' in a form suitable for use as an unambiguous + identifier, using 'tzid' to convert recurrence identifiers that are dates. + """ + + return format_datetime(get_recurrence_start(recurrenceid, tzid)) # vim: tabstop=4 expandtab shiftwidth=4 diff -r 11b5c79e5a9c -r 9824a7a30827 imipweb/event.py --- a/imipweb/event.py Sun May 17 19:25:22 2015 +0200 +++ b/imipweb/event.py Sun May 17 19:31:54 2015 +0200 @@ -22,8 +22,9 @@ from datetime import date, timedelta from imiptools.client import update_attendees, update_participation from imiptools.data import get_uri, uri_dict, uri_values -from imiptools.dates import format_datetime, get_datetime, get_datetime_item, \ - get_period_item, to_date, to_datetime, to_timezone +from imiptools.dates import format_datetime, get_datetime_item, \ + get_period_item, get_recurrence_start, to_date, \ + to_timezone from imiptools.mail import Messenger from imiptools.period import have_conflict from imipweb.data import EventPeriod, \ @@ -65,16 +66,16 @@ def is_replaced(self, period, recurrenceids): for s in recurrenceids: - dt = to_timezone(get_datetime(s), self.get_tzid()) - if to_datetime(period.get_start(), self.get_tzid()) == dt: + dt = get_recurrence_start(s, self.get_tzid()) + if period.get_start() == dt: return s return None def is_affected(self, period, recurrenceid): if not recurrenceid: return None - dt = to_timezone(get_datetime(recurrenceid), self.get_tzid()) - if to_datetime(period.get_start(), self.get_tzid()) == dt: + dt = get_recurrence_start(recurrenceid, self.get_tzid()) + if period.get_start() == dt: return recurrenceid return None