From f3b341b6b9f1de120f33d96872f61e7be1bc3980 Mon Sep 17 00:00:00 2001 From: len-odoo Date: Thu, 13 Dec 2018 11:57:35 +0000 Subject: [PATCH] [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 --- addons/fleet/models/fleet_vehicle.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/fleet/models/fleet_vehicle.py b/addons/fleet/models/fleet_vehicle.py index 2aedc45d68c..091595bc937 100644 --- a/addons/fleet/models/fleet_vehicle.py +++ b/addons/fleet/models/fleet_vehicle.py @@ -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()