From 5b08fe4d6d54cd51ab02aa52bcf806dceec19b52 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Thu, 20 Jan 2011 17:00:20 +0100 Subject: [PATCH] [FIX] base: ir.model.data:call_cache_clearing_methods is tolerant to unknow objects ir.ui.menu: remove __del__ method as this can forbid the python gc to break the pool cycle bzr revid: chs@openerp.com-20110120160020-t1bfkpjgeqpa5vsw --- bin/addons/base/ir/ir_model.py | 4 +++- bin/addons/base/ir/ir_ui_menu.py | 4 ---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/bin/addons/base/ir/ir_model.py b/bin/addons/base/ir/ir_model.py index 25ee8e2cc97..5ce50370c77 100644 --- a/bin/addons/base/ir/ir_model.py +++ b/bin/addons/base/ir/ir_model.py @@ -531,7 +531,9 @@ class ir_model_access(osv.osv): def call_cache_clearing_methods(self, cr): self.check.clear_cache(cr.dbname) # clear the cache of check function for model, method in self.__cache_clearing_methods: - getattr(self.pool.get(model), method)() + object_ = self.pool.get(model) + if object_: + getattr(object_, method)() # # Check rights on actions diff --git a/bin/addons/base/ir/ir_ui_menu.py b/bin/addons/base/ir/ir_ui_menu.py index 6733b3d83ff..5bdef4feecc 100644 --- a/bin/addons/base/ir/ir_ui_menu.py +++ b/bin/addons/base/ir/ir_ui_menu.py @@ -44,10 +44,6 @@ class ir_ui_menu(osv.osv): self.pool.get('ir.model.access').register_cache_clearing_method(self._name, 'clear_cache') return r - def __del__(self): - self.pool.get('ir.model.access').unregister_cache_clearing_method(self._name, 'clear_cache') - return super(ir_ui_menu, self).__del__() - def clear_cache(self): # radical but this doesn't frequently happen self._cache = {}