diff -r 918fd9931cb7 -r d45cde54d464 vregistry.py --- a/vregistry.py Sat Feb 06 08:45:14 2010 +0100 +++ b/vregistry.py Mon Feb 08 11:08:55 2010 +0100 @@ -84,6 +84,11 @@ except KeyError: raise ObjectNotFound(name), None, sys.exc_info()[-1] + def initialization_completed(self): + for appobjects in self.itervalues(): + for appobjectcls in appobjects: + appobjectcls.__registered__(self) + def register(self, obj, oid=None, clear=False): """base method to add an object in the registry""" assert not '__abstract__' in obj.__dict__ @@ -93,11 +98,9 @@ appobjects = self[oid] = [] else: appobjects = self.setdefault(oid, []) - appobject = obj.__registered__(self) - assert not appobject in appobjects, \ - 'object %s is already registered' % appobject - assert callable(appobject.__select__), appobject - appobjects.append(appobject) + assert not obj in appobjects, \ + 'object %s is already registered' % obj + appobjects.append(obj) def register_and_replace(self, obj, replaced): # XXXFIXME this is a duplication of unregister() @@ -356,8 +359,15 @@ for filepath, modname in filemods: if self.load_file(filepath, modname, force_reload): change = True + if change: + self.initialization_completed() return change + def initialization_completed(self): + for regname, reg in self.iteritems(): + self.debug('available in registry %s: %s', regname, sorted(reg)) + reg.initialization_completed() + def load_file(self, filepath, modname, force_reload=False): """load app objects from a python file""" from logilab.common.modutils import load_module_from_name