# HG changeset patch # User Paul Boddie # Date 1516468692 -3600 # Node ID 91377bce1c6c58bf6b9ba3a92747d26bbd9eac5e # Parent 4b15a54aaa6e511738371da8be4f89b681ddeb77 Renamed is_recurrence to describes_recurrence_period, has_recurrence to has_recurrence_period, making the latter return any found period or None. Reverted the erroneous introduction of attendance modification variables. Added some comments. diff -r 4b15a54aaa6e -r 91377bce1c6c imiptools/client.py --- a/imiptools/client.py Sat Jan 20 17:41:23 2018 +0100 +++ b/imiptools/client.py Sat Jan 20 18:18:12 2018 +0100 @@ -440,6 +440,8 @@ "Set the current object to 'obj', obtaining metadata details." + # Set convenience attributes to null values if the object is null. + self.obj = obj self.uid = obj and self.obj.get_uid() self.recurrenceid = obj and self.obj.get_recurrenceid() @@ -496,12 +498,15 @@ return self.obj.get_uri("ORGANIZER") == self.user - def is_recurrence(self): + def describes_recurrence_period(self): - "Return whether the current object is a recurrence of its parent." + """ + Return whether the current object describes a recurrence period defined + in its parent. + """ parent = self.get_parent_object() - return parent and parent.has_recurrence(self.obj.get_recurrenceid()) + return parent and parent.has_recurrence_period(self.obj.get_recurrenceid()) def get_recurrences(self, uid=None): diff -r 4b15a54aaa6e -r 91377bce1c6c imiptools/data.py --- a/imiptools/data.py Sat Jan 20 17:41:23 2018 +0100 +++ b/imiptools/data.py Sat Jan 20 18:18:12 2018 +0100 @@ -402,20 +402,21 @@ return period in self.get_periods(end=period.get_start_point(), inclusive=True) - def has_recurrence(self, recurrenceid): + def has_recurrence_period(self, recurrenceid): """ Return whether this object, employing the fallback time zone where no - time zone information is defined, has the given 'recurrenceid'. + time zone information is defined, has the given 'recurrenceid'. Any + found period will be returned, None otherwise. """ start_point = self.get_recurrence_start_point(recurrenceid) for p in self.get_periods(end=start_point, inclusive=True): if p.get_start_point() == start_point: - return True + return p - return False + return None def get_updated_periods(self, start=None, end=None): diff -r 4b15a54aaa6e -r 91377bce1c6c imiptools/editing.py --- a/imiptools/editing.py Sat Jan 20 17:41:23 2018 +0100 +++ b/imiptools/editing.py Sat Jan 20 18:18:12 2018 +0100 @@ -1521,8 +1521,7 @@ # Main period changes can only be sensibly expressed as a counter- # proposal by expressing the entire event as such. - if new or removed or is_changed or main_modified or reinstated or \ - reinstated_attendance: + if new or removed or is_changed or main_modified or reinstated: # The event is defined in terms of new periods and exceptions for # removed periods or obsolete rule periods. @@ -1539,7 +1538,7 @@ else: to_set = [] to_exclude = [] - to_reschedule = list(chain(replaced_modified, replaced_modified_attendance)) + to_reschedule = replaced_modified all_unscheduled = cancelled_unmodified all_rescheduled = list(chain(replaced_unmodified, to_reschedule)) diff -r 4b15a54aaa6e -r 91377bce1c6c imiptools/handlers/common.py --- a/imiptools/handlers/common.py Sat Jan 20 17:41:23 2018 +0100 +++ b/imiptools/handlers/common.py Sat Jan 20 18:18:12 2018 +0100 @@ -153,7 +153,7 @@ # Handle any newly-separated, valid occurrence. - return not obj and self.is_recurrence() + return not obj and self.describes_recurrence_period() def make_separate_occurrence(self):