# HG changeset patch # User Paul Boddie # Date 1441979373 -7200 # Node ID d3780420461dc68f0c13b0ba92681132ffbe19fc # Parent 2e36f646bc59f50b014afaa493bec6ad77a66a81 Added support for testing whether a usable object can be handled. diff -r 2e36f646bc59 -r d3780420461d imiptools/client.py --- a/imiptools/client.py Fri Sep 11 13:40:39 2015 +0200 +++ b/imiptools/client.py Fri Sep 11 15:49:33 2015 +0200 @@ -268,6 +268,12 @@ self.sequence = obj and self.obj.get_value("SEQUENCE") self.dtstamp = obj and self.obj.get_value("DTSTAMP") + def is_usable(self): + + "Return whether the current object is usable." + + return True + # Object update methods. def update_recurrenceid(self): @@ -286,7 +292,7 @@ dtstamp = self.obj.get_utc_datetime("DTSTAMP") utcnow = to_timezone(datetime.utcnow(), "UTC") - self.dtstamp = format_datetime(dtstamp > utcnow and dtstamp or utcnow) + self.dtstamp = format_datetime(dtstamp and dtstamp > utcnow and dtstamp or utcnow) self.obj["DTSTAMP"] = [(self.dtstamp, {})] def set_sequence(self, increment=False): diff -r 2e36f646bc59 -r d3780420461d imiptools/content.py --- a/imiptools/content.py Fri Sep 11 13:40:39 2015 +0200 +++ b/imiptools/content.py Fri Sep 11 15:49:33 2015 +0200 @@ -69,7 +69,8 @@ # Dispatch to a handler and obtain any response. handler.set_object(Object({name : item})) - methods[method](handler)() + if handler.is_usable(): + methods[method](handler)() # Handler registry. diff -r 2e36f646bc59 -r d3780420461d imiptools/data.py --- a/imiptools/data.py Fri Sep 11 13:40:39 2015 +0200 +++ b/imiptools/data.py Fri Sep 11 15:49:33 2015 +0200 @@ -648,6 +648,7 @@ """ Return the value provided by 'd' for 'name' as a datetime in the UTC zone or as a date, converting any date to a datetime if 'date_tzid' is specified. + If no datetime or date is available, None is returned. """ t = get_datetime_item(d, name) @@ -655,7 +656,7 @@ return None else: dt, attr = t - return to_utc_datetime(dt, date_tzid) + return dt is not None and to_utc_datetime(dt, date_tzid) or None def get_datetime_item(d, name): diff -r 2e36f646bc59 -r d3780420461d imiptools/handlers/common.py --- a/imiptools/handlers/common.py Fri Sep 11 13:40:39 2015 +0200 +++ b/imiptools/handlers/common.py Fri Sep 11 15:49:33 2015 +0200 @@ -70,6 +70,12 @@ "Common outgoing message handling functionality mix-in." + def is_usable(self): + + "Return whether the current object is usable." + + return self.obj and self.obj.get_value("DTSTART") + def update_event_in_freebusy(self, for_organiser=True): """