vregistry.py
changeset 2844 4657d6e16e0c
parent 2838 107421e426de
child 2968 0e3460341023
equal deleted inserted replaced
2843:3f5194ef620d 2844:4657d6e16e0c
   312         try:
   312         try:
   313             vname = obj.__name__
   313             vname = obj.__name__
   314         except AttributeError:
   314         except AttributeError:
   315             vname = obj.__class__.__name__
   315             vname = obj.__class__.__name__
   316         self.debug('registered appobject %s in registry %s with id %s',
   316         self.debug('registered appobject %s in registry %s with id %s',
   317                    vname, registryname, oid or obj.id)
   317                    vname, registryname, oid or class_regid(obj))
   318         self._loadedmods[obj.__module__]['%s.%s' % (obj.__module__, oid)] = obj
   318         self._loadedmods[obj.__module__][classid(obj)] = obj
   319 
   319 
   320     def unregister(self, obj, registryname=None):
   320     def unregister(self, obj, registryname=None):
   321         self[registryname or obj.__registry__].unregister(obj)
   321         self[registryname or obj.__registry__].unregister(obj)
   322 
   322 
   323     def register_and_replace(self, obj, replaced, registryname=None):
   323     def register_and_replace(self, obj, replaced, registryname=None):
   402         try:
   402         try:
   403             if not issubclass(obj, AppObject):
   403             if not issubclass(obj, AppObject):
   404                 return
   404                 return
   405         except TypeError:
   405         except TypeError:
   406             return
   406             return
   407         objname = '%s.%s' % (modname, obj.__name__)
   407         clsid = classid(obj)
   408         if objname in self._loadedmods[modname]:
   408         if clsid in self._loadedmods[modname]:
   409             return
   409             return
   410         self._loadedmods[modname][objname] = obj
   410         self._loadedmods[modname][clsid] = obj
   411         for parent in obj.__bases__:
   411         for parent in obj.__bases__:
   412             self._load_ancestors_then_object(modname, parent)
   412             self._load_ancestors_then_object(modname, parent)
   413         self.load_object(obj)
   413         self.load_object(obj)
   414 
   414 
   415     def load_object(self, obj):
   415     def load_object(self, obj):