diff --git a/odoo/addons/base/models/res_country.py b/odoo/addons/base/models/res_country.py index a3984155b4e..e6840b17517 100644 --- a/odoo/addons/base/models/res_country.py +++ b/odoo/addons/base/models/res_country.py @@ -92,6 +92,16 @@ class Country(models.Model): self.ensure_one() return re.findall(r'\((.+?)\)', self.address_format) + @api.model + def name_search(self, name='', args=None, operator='ilike', limit=100): + if args is None: + args = [] + records = self.search([('code', '=', name)] + args, limit=limit) + if not records: + search_domain = [('name', operator, name)] + records = self.search(search_domain + args, limit=limit) + return [(record.id, record.display_name) for record in records] + class CountryGroup(models.Model): _description = "Country Group" @@ -122,10 +132,10 @@ class CountryState(models.Model): args = [] if self.env.context.get('country_id'): args = args + [('country_id', '=', self.env.context.get('country_id'))] - firsts_records = self.search([('code', '=ilike', name)] + args, limit=limit) - search_domain = [('name', operator, name)] - search_domain.append(('id', 'not in', firsts_records.ids)) - records = firsts_records + self.search(search_domain + args, limit=limit) + records = self.search([('code', '=', name)] + args, limit=limit) + if not records: + search_domain = [('name', operator, name)] + records = self.search(search_domain + args, limit=limit) return [(record.id, record.display_name) for record in records]