From ebe9e3faedf9d17a40a14fb714f499753cd74cc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Mon, 3 Oct 2011 15:37:55 +0200 Subject: [PATCH] Search on Many2One fields include inactive records review127001 --- CHANGELOG | 1 + trytond/model/modelsql.py | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3ac4167e22..a0d583b7de 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Search on Many2One fields include inactive records * Change select on fields into Boolean * Change format of search_value on ir.action.act_window * Manage relation field access diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index bb64d7cbe3..5dc93fe9f5 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1383,15 +1383,18 @@ class ModelSQL(ModelStorage): if len(fargs) > 1: if field._type == 'many2one': target_obj = pool.get(field.model_name) + m2o_search = [(fargs[1], domain[i][1], domain[i][2])] + if ('active' in target_obj._columns + or 'active' in target_obj._inherit_fields): + m2o_search += [('active', 'in', (True, False))] if hasattr(field, 'search'): - domain.extend([(fargs[0], 'in', target_obj.search([ - (fargs[1], domain[i][1], domain[i][2]), - ], order=[]))]) + domain.extend([(fargs[0], 'in', + target_obj.search(m2o_search, order=[]))]) domain.pop(i) else: - domain[i] = (fargs[0], 'inselect', target_obj.search([ - (fargs[1], domain[i][1], domain[i][2]), - ], order=[], query_string=True), table) + domain[i] = (fargs[0], 'inselect', + target_obj.search(m2o_search, order=[], + query_string=True), table) i += 1 continue elif field._type in ('one2one', 'many2many', 'one2many'): @@ -1624,9 +1627,11 @@ class ModelSQL(ModelStorage): else: if isinstance(domain[i][2], basestring): field_obj = pool.get(field.model_name) - res_ids = field_obj.search([ - ('rec_name', domain[i][1], domain[i][2]), - ], order=[]) + m2o_search = [('rec_name', domain[i][1], domain[i][2])] + if ('active' in field_obj._columns + or 'active' in field_obj._inherit_fields): + m2o_search += [('active', 'in', (True, False))] + res_ids = field_obj.search(m2o_search, order=[]) domain[i] = (domain[i][0], 'in', res_ids, table) else: domain[i] += (table,)