[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:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user