# HG changeset patch # User Adrien Di Mascio # Date 1234910698 -3600 # Node ID 2f3e6afabdb5c8ce5789a5bccc24e6e014b975f5 # Parent 1ecba333cfb00e0862d2cf63fe82fdaab705ef02 safety belt inside _accept_interfaces() as it might be called on a class that doesn't provide (yet) __select__ diff -r 1ecba333cfb0 -r 2f3e6afabdb5 common/registerers.py --- a/common/registerers.py Tue Feb 17 23:43:08 2009 +0100 +++ b/common/registerers.py Tue Feb 17 23:44:58 2009 +0100 @@ -14,10 +14,16 @@ from cubicweb.selectors import implements def _accepts_interfaces(obj): - impl = obj.__select__.search_selector(implements) - if impl: - return sorted(impl.expected_ifaces) - return sorted(getattr(obj, 'accepts_interfaces', ())) + try: + return sorted(obj.accepts_interfaces) + except AttributeError: + try: + impl = obj.__select__.search_selector(implements) + if impl: + return sorted(impl.expected_ifaces) + except AttributeError: + pass # old-style vobject classes with no accepts_interfaces + return () class priority_registerer(registerer): @@ -68,7 +74,7 @@ """ def do_it_yourself(self, registered): # if object is accepting interface, we have register it now and - # remove it latter if no object is implementing accepted interfaces + # remove it later if no object is implementing accepted interfaces if _accepts_interfaces(self.vobject): return self.vobject self.remove_equivalents(registered)