From 0ebf073cdb50218d42ed5c95cb7b0d41e3591670 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Thu, 28 Apr 2016 14:34:23 +0200 Subject: [PATCH] [FIX] ir.ui.view: split search() triggering ORM bug Search terms inside an OR branch in a domain cannot currently use relationships that are not required. The root cause is the INNER JOIN used to implement it. --- openerp/addons/base/ir/ir_ui_view.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index 6a1c2428bc8..1e827b1898a 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -398,12 +398,15 @@ actual arch. if self.pool._init and not self._context.get('load_all_views'): # Module init currently in progress, only consider views from # modules whose code is already loaded - conditions.extend([ - '|', - ('model_ids.module', 'in', tuple(self.pool._init_modules)), - ('id', 'in', self._context.get('check_view_ids') or (0,)), - ]) - views = self.search(conditions) + + # Search terms inside an OR branch in a domain + # cannot currently use relationships that are + # not required. The root cause is the INNER JOIN + # used to implement it. + views = self.search(conditions + [('model_ids.module', 'in', tuple(self.pool._init_modules))]) + views = self.search(conditions + [('id', 'in', list(self._context.get('check_view_ids') or (0,)) + map(int, views))]) + else: + views = self.search(conditions) return [(view.arch, view.id) for view in views.sudo()