diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index d2e0939d1a7..b1f1abb5060 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -61,6 +61,18 @@ class actions(osv.osv): 'usage': lambda *a: False, } + def create(self, cr, uid, vals, context=None): + res = super(actions, self).create(cr, uid, vals, context=context) + # ir_values.get_actions() depends on action records + self.pool['ir.values'].clear_caches() + return res + + def write(self, cr, uid, ids, vals, context=None): + res = super(actions, self).write(cr, uid, ids, vals, context=context) + # ir_values.get_actions() depends on action records + self.pool['ir.values'].clear_caches() + return res + def unlink(self, cr, uid, ids, context=None): """unlink ir.action.todo which are related to actions which will be deleted. NOTE: ondelete cascade will not work on ir.actions.actions so we will need to do it manually.""" @@ -71,7 +83,10 @@ class actions(osv.osv): ids = [ids] todo_ids = todo_obj.search(cr, uid, [('action_id', 'in', ids)], context=context) todo_obj.unlink(cr, uid, todo_ids, context=context) - return super(actions, self).unlink(cr, uid, ids, context=context) + res = super(actions, self).unlink(cr, uid, ids, context=context) + # ir_values.get_actions() depends on action records + self.pool['ir.values'].clear_caches() + return res def _get_eval_context(self, cr, uid, action=None, context=None): """ evaluation context to pass to safe_eval """ diff --git a/openerp/addons/base/ir/ir_values.py b/openerp/addons/base/ir/ir_values.py index e8c176b372b..c6cdd4f6233 100644 --- a/openerp/addons/base/ir/ir_values.py +++ b/openerp/addons/base/ir/ir_values.py @@ -192,17 +192,17 @@ class ir_values(osv.osv): def create(self, cr, uid, vals, context=None): res = super(ir_values, self).create(cr, uid, vals, context=context) - self.get_defaults_dict.clear_cache(self) + self.clear_caches() return res def write(self, cr, uid, ids, vals, context=None): res = super(ir_values, self).write(cr, uid, ids, vals, context=context) - self.get_defaults_dict.clear_cache(self) + self.clear_caches() return res def unlink(self, cr, uid, ids, context=None): res = super(ir_values, self).unlink(cr, uid, ids, context=context) - self.get_defaults_dict.clear_cache(self) + self.clear_caches() return res def set_default(self, cr, uid, model, field_name, value, for_all_users=True, company_id=False, condition=False): @@ -387,6 +387,7 @@ class ir_values(osv.osv): 'value': action, }) + @tools.ormcache_context(accepted_keys=('lang',)) def get_actions(self, cr, uid, action_slot, model, res_id=False, context=None): """Retrieves the list of actions bound to the given model's action slot. See the class description for more details about the various action diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py index 687aa39d355..9941682d8fa 100644 --- a/openerp/addons/base/res/res_users.py +++ b/openerp/addons/base/res/res_users.py @@ -718,16 +718,22 @@ class groups_view(osv.osv): def create(self, cr, uid, values, context=None): res = super(groups_view, self).create(cr, uid, values, context) self.update_user_groups_view(cr, uid, context) + # ir_values.get_actions() depends on action records + self.pool['ir.values'].clear_caches() return res def write(self, cr, uid, ids, values, context=None): res = super(groups_view, self).write(cr, uid, ids, values, context) self.update_user_groups_view(cr, uid, context) + # ir_values.get_actions() depends on action records + self.pool['ir.values'].clear_caches() return res def unlink(self, cr, uid, ids, context=None): res = super(groups_view, self).unlink(cr, uid, ids, context) self.update_user_groups_view(cr, uid, context) + # ir_values.get_actions() depends on action records + self.pool['ir.values'].clear_caches() return res def update_user_groups_view(self, cr, uid, context=None):