From 66e37d7b197d598bede727bab7c283ce52275e45 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 8 Jan 2014 15:13:18 +0100 Subject: [PATCH] [FIX] expression: allow exclusion of records with translated fields lp bug: https://launchpad.net/bugs/1071710 fixed bzr revid: chs@openerp.com-20140108141318-erw2gdv982903buz --- openerp/addons/base/test/test_osv_expression.yml | 10 ++++++++++ openerp/osv/expression.py | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/test/test_osv_expression.yml b/openerp/addons/base/test/test_osv_expression.yml index 3de0c92..7a8254c 100644 --- a/openerp/addons/base/test/test_osv_expression.yml +++ b/openerp/addons/base/test/test_osv_expression.yml @@ -550,3 +550,13 @@ not_be = self.search(cr, uid, [('name', '!=', 'Belgique')], context=ctx) assert be_id not in not_be, "Search match failed" + + # indirect search via m2o + Partners = self.pool.get('res.partner') + agrolait = Partners.search(cr, uid, [('name', '=', 'Agrolait')])[0] + + not_be = Partners.search(cr, uid, [('country_id', '!=', 'Belgium')]) + assert agrolait not in not_be, "Search match failed (m2o)" + + not_be = Partners.search(cr, uid, [('country_id', '!=', 'Belgique')], context=ctx) + assert agrolait not in not_be, "Search match failed (m2o)" diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 5d92695..27efdaa 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -624,9 +624,9 @@ class expression(object): right = '%%%s%%' % right inselect_operator = 'inselect' - if operator in NEGATIVE_TERM_OPERATORS: + if sql_operator in NEGATIVE_TERM_OPERATORS: # negate operator (fix lp:1071710) - operator = operator[4:] if operator[:3] == 'not' else '=' + sql_operator = sql_operator[4:] if sql_operator[:3] == 'not' else '=' inselect_operator = 'not inselect' subselect = '( SELECT res_id' \ -- 1.7.10.4