[FIX] registry: fix a bug where RegistryManager.new() could return an out-of-date...
authorVo Minh Thu <vmt@openerp.com>
Tue, 12 Feb 2013 08:53:11 +0000 (09:53 +0100)
committerVo Minh Thu <vmt@openerp.com>
Tue, 12 Feb 2013 08:53:11 +0000 (09:53 +0100)
bzr revid: vmt@openerp.com-20130212085311-o53wv7yful39kktd

openerp/modules/module.py
openerp/modules/registry.py

index 98955af..ec1c6a1 100644 (file)
@@ -400,7 +400,7 @@ def load_openerp_module(module_name):
     initialize_sys_path()
     try:
         mod_path = get_module_path(module_name)
-        zip_mod_path = mod_path + '.zip'
+        zip_mod_path = '' if not mod_path else mod_path + '.zip'
         if not os.path.isfile(zip_mod_path):
             __import__('openerp.addons.' + module_name)
         else:
index 4aa20f3..b06c500 100644 (file)
@@ -216,6 +216,11 @@ class RegistryManager(object):
                 del cls.registries[db_name]
                 raise
 
+            # load_modules() above can replace the registry by calling
+            # indirectly new() again (when modules have to be uninstalled).
+            # Yeah, crazy.
+            registry = cls.registries[db_name]
+
             cr = registry.db.cursor()
             try:
                 Registry.setup_multi_process_signaling(cr)