diff options
| author | Nicolas Seinlet <nse@openerp.com> | 2018-12-05 15:17:59 +0000 |
|---|---|---|
| committer | Nicolas Seinlet <nse@openerp.com> | 2019-01-23 09:41:50 +0000 |
| commit | f22fef1776e6c09321c367dc5ccf102e2c95a992 (patch) | |
| tree | ae1c4012f4c11022db85e89cacec6318421a9d2d /addons | |
| parent | c8ac1b40f258a2de72437ada292ec7256db36c3f (diff) | |
[IMP] fleet: search on name of auto joined driver
Instead of searching for the driver name and return thousands of partner
ids in the vehicule search, use a database join and a search on the
driver name.
closes odoo/odoo#29288
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/fleet/models/fleet_vehicle.py | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/addons/fleet/models/fleet_vehicle.py b/addons/fleet/models/fleet_vehicle.py index 6be09a1da8a..040b92200a7 100644 --- a/addons/fleet/models/fleet_vehicle.py +++ b/addons/fleet/models/fleet_vehicle.py @@ -23,7 +23,7 @@ class FleetVehicle(models.Model): license_plate = fields.Char(track_visibility="onchange", help='License plate number of the vehicle (i = plate number for a car)') vin_sn = fields.Char('Chassis Number', help='Unique number written on the vehicle motor (VIN/SN number)', copy=False) - driver_id = fields.Many2one('res.partner', 'Driver', track_visibility="onchange", help='Driver of the vehicle', copy=False) + driver_id = fields.Many2one('res.partner', 'Driver', track_visibility="onchange", help='Driver of the vehicle', copy=False, auto_join=True) model_id = fields.Many2one('fleet.vehicle.model', 'Model', track_visibility="onchange", required=True, help='Model of the vehicle') brand_id = fields.Many2one('fleet.vehicle.model.brand', 'Brand', related="model_id.brand_id", store=True, readonly=False) @@ -229,12 +229,7 @@ class FleetVehicle(models.Model): @api.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)]]) - # 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)]]) + domain = expression.AND([domain, ['|', ('name', operator, name), ('driver_id.name', operator, name)]]) rec = self._search(domain, limit=limit, access_rights_uid=name_get_uid) return self.browse(rec).name_get() |
