[FIX] fleet: make _name_search not override driver_id in domain

The _name_search did override the domain's search
by OR'ing it with a loose condition on the driver_id.
As a result if an upstanding Odooer added a strict filter on the driver_id,
it was ignored in favour of the loose one.

opw 1915639

closes odoo/odoo#29515
This commit is contained in:
len-odoo
2018-12-13 11:57:38 +00:00
parent 206e0b71ac
commit f3b341b6b9
+5 -3
View File
@@ -229,9 +229,11 @@ class FleetVehicle(models.Model):
def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None):
domain = args or []
domain = expression.AND([domain, [('name', operator, name)]])
partner_ids = self.env['res.partner']._search([('name', operator, name)], access_rights_uid=name_get_uid)
if partner_ids:
domain = expression.OR([domain, ['|', ('driver_id', 'in', partner_ids), ('driver_id', '=', False)]])
# we don't want to override the domain's filter on driver_id if present
if not any(['driver_id' in element for element in domain]):
partner_ids = self.env['res.partner']._search([('name', operator, name)], access_rights_uid=name_get_uid)
if partner_ids:
domain = expression.OR([domain, ['|', ('driver_id', 'in', partner_ids), ('driver_id', '=', False)]])
rec = self._search(domain, limit=limit, access_rights_uid=name_get_uid)
return self.browse(rec).name_get()