From 9d06d987352364e218d66b4e69eec1ce4776eff7 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 26 Apr 2013 11:02:37 +0200 Subject: [PATCH] [FIX] read_combined and get_inheriting_views_arch when no model provided * view['model'] required for base_model_name handling, force its read as with arch (nb: arch could actually be made optional, if it's not being read can skip most of the inheritance complexity no?) * if model=None in get_inheriting_views_arch, it generates domain to SQL `model is NULL`, except model required on ir.ui.view so unspec'd models are `''` (the empty string) not NULL => inherited views never found. Righter move might be to formally make model non-required on view. bzr revid: xmo@openerp.com-20130426090237-u3rojvx4gow6uue1 --- openerp/addons/base/ir/ir_ui_view.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index f1dd0508dbe..79dbc3ff419 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -200,8 +200,11 @@ class view(osv.osv): view_id = self.default_view(cr, uid, model, view_type, context=context) root_id = self.root_ancestor(cr, uid, view_id, context=context) - if fields and 'arch' not in fields: - fields = list(itertools.chain(['arch'], fields)) + if fields: + needed_fields = ['arch', 'model'] + fields = list(itertools.chain( + [field for field in needed_fields if field not in fields], + fields)) [view] = self.read(cr, uid, [root_id], fields=fields, context=context) @@ -281,7 +284,7 @@ class view(osv.osv): """ user_groups = frozenset(self.pool.get('res.users').browse(cr, 1, uid, context).groups_id) - conditions = [['inherit_id', '=', view_id], ['model', '=', model]] + conditions = [['inherit_id', '=', view_id], ['model', '=', model or '']] if self.pool._init: # Module init currently in progress, only consider views from # modules whose code is already loaded