From 53742a4a70dfef02fa90615d546eb6e1824afdc7 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Tue, 23 Feb 2016 18:10:53 +0100 Subject: [PATCH] [FIX] core: parent store compute on registry loading When loading the registry, the parent store are defered at the end of the registry initialisation. However, when modules should be removed, a brand new registry is build without deleted modules, losing the list of models on which parent store should be recomputed. --- openerp/modules/registry.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py index 1c7b796024a..6599f354a84 100644 --- a/openerp/modules/registry.py +++ b/openerp/modules/registry.py @@ -135,8 +135,9 @@ class Registry(Mapping): return self._fields_by_model[model_name] def do_parent_store(self, cr): - for o in self._init_parent: - self.get(o)._parent_store_compute(cr) + for model in self._init_parent: + if model in self: + self[model]._parent_store_compute(cr) self._init = False def obj_list(self): @@ -391,7 +392,9 @@ class RegistryManager(object): # load_modules() above can replace the registry by calling # indirectly new() again (when modules have to be uninstalled). # Yeah, crazy. + init_parent = registry._init_parent registry = cls.registries[db_name] + registry._init_parent.update(init_parent) cr = registry.cursor() try: