diff --git a/odoo/osv/expression.py b/odoo/osv/expression.py index 3b5d509df61..90dd394537c 100644 --- a/odoo/osv/expression.py +++ b/odoo/osv/expression.py @@ -565,7 +565,7 @@ class expression(object): return list({ rid for name in names - for rid, rname in comodel.name_search(name, [], 'ilike', limit=None) + for rid in comodel._name_search(name, [], 'ilike', limit=None) }) return list(value) @@ -581,13 +581,13 @@ class expression(object): for rec in left_model.browse(ids) ]) if prefix: - return [(left, 'in', left_model.search(doms, order='id').ids)] + return [(left, 'in', left_model._search(doms, order='id'))] return doms else: parent_name = parent or left_model._parent_name child_ids = set(ids) while ids: - ids = left_model.search([(parent_name, 'in', ids)], order='id').ids + ids = left_model._search([(parent_name, 'in', ids)], order='id') child_ids.update(ids) return [(left, 'in', list(child_ids))] @@ -739,12 +739,12 @@ class expression(object): raise NotImplementedError('auto_join attribute not supported on field %s' % field) elif len(path) > 1 and field.store and field.type == 'many2one': - right_ids = comodel.with_context(active_test=False).search([('.'.join(path[1:]), operator, right)], order='id').ids + right_ids = comodel.with_context(active_test=False)._search([(path[1], operator, right)], order='id') push((path[0], 'in', right_ids), model, alias) # Making search easier when there is a left operand as one2many or many2many elif len(path) > 1 and field.store and field.type in ('many2many', 'one2many'): - right_ids = comodel.with_context(**field.context).search([('.'.join(path[1:]), operator, right)], order='id').ids + right_ids = comodel.with_context(**field.context)._search([(path[1], operator, right)], order='id') push((path[0], 'in', right_ids), model, alias) elif not field.store: @@ -759,7 +759,7 @@ class expression(object): else: # Let the field generate a domain. if len(path) > 1: - right = comodel.search([('.'.join(path[1:]), operator, right)], order='id').ids + right = comodel._search([(path[1], operator, right)], order='id') operator = 'in' domain = field.determine_domain(model, operator, right) @@ -790,13 +790,13 @@ class expression(object): if isinstance(right, str): op2 = (TERM_OPERATORS_NEGATION[operator] if operator in NEGATIVE_TERM_OPERATORS else operator) - ids2 = [x[0] for x in comodel.name_search(right, domain or [], op2, limit=None)] + ids2 = comodel._name_search(right, domain or [], op2, limit=None) elif isinstance(right, collections.abc.Iterable): ids2 = right else: ids2 = [right] if ids2 and inverse_is_int and domain: - ids2 = comodel.search([('id', 'in', ids2)] + domain, order='id').ids + ids2 = comodel._search([('id', 'in', ids2)] + domain, order='id') if ids2 and comodel._fields[field.inverse_name].store: op1 = 'not inselect' if operator in NEGATIVE_TERM_OPERATORS else 'inselect' @@ -835,7 +835,7 @@ class expression(object): # determine ids2 in comodel ids2 = to_ids(right, comodel, leaf) domain = HIERARCHY_FUNCS[operator]('id', ids2, comodel) - ids2 = comodel.search(domain, order='id').ids + ids2 = comodel._search(domain, order='id') # rewrite condition in terms of ids2 if comodel == model: @@ -850,7 +850,7 @@ class expression(object): domain = field.get_domain_list(model) op2 = (TERM_OPERATORS_NEGATION[operator] if operator in NEGATIVE_TERM_OPERATORS else operator) - ids2 = [x[0] for x in comodel.name_search(right, domain or [], op2, limit=None)] + ids2 = comodel._name_search(right, domain or [], op2, limit=None) elif isinstance(right, collections.abc.Iterable): ids2 = right else: @@ -889,7 +889,7 @@ class expression(object): operator = dict_op[operator] elif isinstance(right, list) and operator in ['!=', '=']: # for domain (FIELD,'=',['value1','value2']) operator = dict_op[operator] - res_ids = [x[0] for x in comodel.with_context(active_test=False).name_search(right, [], operator, limit=None)] + res_ids = comodel.with_context(active_test=False)._name_search(right, [], operator, limit=None) if operator in NEGATIVE_TERM_OPERATORS: res_ids.append(False) # TODO this should not be appended if False was in 'right' return left, 'in', res_ids