[IMP] base: select countries & state based on exact code, (useful for import and fast many2one)

This commit is contained in:
Fabien Pinckaers
2018-03-02 14:21:36 +01:00
parent e0e3deac41
commit 09a22e3bef
+14 -4
View File
@@ -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]