vregistry.py
branchtls-sprint
changeset 668 61b2328f9ed9
parent 665 1305da1ce3f9
child 673 64c50cb17d70
--- a/vregistry.py	Tue Feb 17 16:45:22 2009 +0100
+++ b/vregistry.py	Tue Feb 17 16:57:02 2009 +0100
@@ -237,13 +237,20 @@
         return objects[0].selected(*args, **kwargs)
 
     # methods for explicit (un)registration ###################################
-    
-    def register(self, obj, registryname=None, oid=None):
+
+#     def clear(self, key):
+#         regname, oid = key.split('.')
+#         self[regname].pop(oid, None)
+        
+    def register(self, obj, registryname=None, oid=None, clear=False):
         """base method to add an object in the registry"""
         registryname = registryname or obj.__registry__
         oid = oid or obj.id
         registry = self._registries.setdefault(registryname, {})
-        vobjects = registry.setdefault(oid, [])
+        if clear:
+            vobjects = registry[oid] =  []
+        else:
+            vobjects = registry.setdefault(oid, [])
         # registered() is technically a classmethod but is not declared
         # as such because we need to compose registered in some cases
         vobject = obj.registered.im_func(cls, self)
@@ -426,8 +433,8 @@
 
     def load_module(self, module):
         self._registered = {}
-        if hasattr(module, 'cw_register_objects'):
-            module.cw_register_objects(self)
+        if hasattr(module, 'registration_callback'):
+            module.registration_callback(self)
         else:
             self.info('loading %s', module)
             for objname, obj in vars(module).items():