Add 3-letters and numeric code
issue5195 review23681002
This commit is contained in:
1 parent
990858ed23
commit
f1ebdf1ca9
5 files changed
+529
-10
No files matched your search
@@ -1,3 +1,4 @@
|
||||
* Add 3-letters and numeric code
|
||||
* Add Python3 support
|
||||
|
||||
Version 3.8.0 - 2015-11-02
|
||||
|
||||
+23
-9
@@ -14,7 +14,13 @@ class Country(ModelSQL, ModelView):
|
||||
help='The full name of the country.', select=True)
|
||||
code = fields.Char('Code', size=2, select=True,
|
||||
help='The ISO country code in two chars.\n'
|
||||
'You can use this field for quick search.', required=True)
|
||||
'You can use this field for quick search.')
|
||||
code3 = fields.Char('3-letters Code', size=3, select=True,
|
||||
help=('The ISO country code in three chars.\n'
|
||||
'You can use this field for quick search.'))
|
||||
code_numeric = fields.Char('Numeric Code', select=True,
|
||||
help=('The ISO numeric country code.\n'
|
||||
'You can use this field for quick search.'))
|
||||
subdivisions = fields.One2Many('country.subdivision',
|
||||
'country', 'Subdivisions')
|
||||
|
||||
@@ -34,18 +40,25 @@ class Country(ModelSQL, ModelView):
|
||||
table.drop_constraint('name_uniq')
|
||||
table.drop_constraint('code_uniq')
|
||||
|
||||
# Migration from 3.8: remove required on code
|
||||
table.not_null_action('code', 'remove')
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
if cls.search([('code',) + tuple(clause[1:])], limit=1):
|
||||
return [('code',) + tuple(clause[1:])]
|
||||
return [(cls._rec_name,) + tuple(clause[1:])]
|
||||
return ['OR',
|
||||
('name',) + tuple(clause[1:]),
|
||||
('code',) + tuple(clause[1:]),
|
||||
('code3',) + tuple(clause[1:]),
|
||||
('code_numeric',) + tuple(clause[1:]),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
vlist = [x.copy() for x in vlist]
|
||||
for vals in vlist:
|
||||
if 'code' in vals and vals['code']:
|
||||
vals['code'] = vals['code'].upper()
|
||||
for code in {'code', 'code3', 'code_numeric'}:
|
||||
if code in vals and vals[code]:
|
||||
vals[code] = vals[code].upper()
|
||||
return super(Country, cls).create(vlist)
|
||||
|
||||
@classmethod
|
||||
@@ -53,9 +66,10 @@ class Country(ModelSQL, ModelView):
|
||||
actions = iter(args)
|
||||
args = []
|
||||
for countries, values in zip(actions, actions):
|
||||
if values.get('code'):
|
||||
values = values.copy()
|
||||
values['code'] = values['code'].upper()
|
||||
for code in {'code', 'code3', 'code_numeric'}:
|
||||
if values.get(code):
|
||||
values = values.copy()
|
||||
values[code] = values[code].upper()
|
||||
args.extend((countries, values))
|
||||
super(Country, cls).write(*args)
|
||||
|
||||
|
||||
+498
File diff suppressed because it is too large.
Load diff
@@ -11,8 +11,10 @@ for country in pycountry.countries:
|
||||
<record model="country.country" id="%s">
|
||||
<field name="name">%s</field>
|
||||
<field name="code">%s</field>
|
||||
<field name="code3">%s</field>
|
||||
<field name="code_numeric">%s</field>
|
||||
</record>\n''' % (country.alpha2.lower(), country.name,
|
||||
country.alpha2)
|
||||
country.alpha2, country.alpha3, country.numeric)
|
||||
sys.stdout.write(record.encode('utf-8'))
|
||||
sys.stdout.write(u' </data>\n')
|
||||
|
||||
|
||||
@@ -6,5 +6,9 @@ this repository contains the full copyright notices and license terms. -->
|
||||
<field name="name"/>
|
||||
<label name="code"/>
|
||||
<field name="code"/>
|
||||
<label name="code3"/>
|
||||
<field name="code3"/>
|
||||
<label name="code_numeric"/>
|
||||
<field name="code_numeric"/>
|
||||
<field name="subdivisions" colspan="4"/>
|
||||
</form>
|
||||
Reference in new issue
Block a user