Rename zip into postal code (issue9853)
This commit is contained in:
parent
08f90c35d8
commit
d96822ce9d
|
@ -6,5 +6,5 @@ from . import party
|
||||||
def register():
|
def register():
|
||||||
Pool.register(
|
Pool.register(
|
||||||
party.Address,
|
party.Address,
|
||||||
party.CountryZip,
|
party.PostalCode,
|
||||||
module='party_zip', type_='model')
|
module='party_zip', type_='model')
|
||||||
|
|
82
party.py
82
party.py
|
@ -4,12 +4,10 @@ from trytond.model import fields
|
||||||
from trytond.pool import PoolMeta, Pool
|
from trytond.pool import PoolMeta, Pool
|
||||||
from trytond.pyson import Eval, If, Bool
|
from trytond.pyson import Eval, If, Bool
|
||||||
|
|
||||||
__all__ = ['Address', 'CountryZip']
|
|
||||||
|
|
||||||
|
|
||||||
class Address(metaclass=PoolMeta):
|
class Address(metaclass=PoolMeta):
|
||||||
__name__ = 'party.address'
|
__name__ = 'party.address'
|
||||||
country_zip = fields.Many2One('country.zip', 'Location',
|
location = fields.Many2One('country.postal_code', 'Location',
|
||||||
ondelete='RESTRICT', domain=[
|
ondelete='RESTRICT', domain=[
|
||||||
If(Bool(Eval('country')), ('country', '=', Eval('country', -1)),
|
If(Bool(Eval('country')), ('country', '=', Eval('country', -1)),
|
||||||
()),
|
()),
|
||||||
|
@ -20,66 +18,72 @@ class Address(metaclass=PoolMeta):
|
||||||
@classmethod
|
@classmethod
|
||||||
def __setup__(cls):
|
def __setup__(cls):
|
||||||
super(Address, cls).__setup__()
|
super(Address, cls).__setup__()
|
||||||
cls.zip.readonly = True
|
cls.postal_code.readonly = True
|
||||||
cls.city.readonly = True
|
cls.city.readonly = True
|
||||||
cls.country.states['readonly'] |= Bool(Eval('country_zip'))
|
cls.country.states['readonly'] |= Bool(Eval('location'))
|
||||||
cls.subdivision.states['readonly'] |= Bool(Eval('country_zip'))
|
cls.subdivision.states['readonly'] |= Bool(Eval('location'))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def __register__(cls, module):
|
||||||
|
# Migration from 5.8: rename country_zip to location
|
||||||
|
table_h = cls.__table_handler__(module)
|
||||||
|
table_h.column_rename('country_zip', 'location')
|
||||||
|
super().__register__(module)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_zip_values(CountryZip, values):
|
def update_location_values(values):
|
||||||
|
pool = Pool()
|
||||||
|
PostalCode = pool.get('country.postal_code')
|
||||||
|
|
||||||
values = values.copy()
|
values = values.copy()
|
||||||
if 'country_zip' in values:
|
if 'location' in values:
|
||||||
if values['country_zip']:
|
if values['location']:
|
||||||
country_zip, = CountryZip.search([
|
postal_code = PostalCode(values['location'])
|
||||||
('id', '=', values['country_zip']),
|
values['postal_code'] = postal_code.postal_code
|
||||||
], limit=1)
|
values['city'] = postal_code.city
|
||||||
values['zip'] = country_zip.zip
|
values['country'] = postal_code.country.id
|
||||||
values['city'] = country_zip.city
|
values['subdivision'] = (postal_code.subdivision.id if
|
||||||
values['country'] = country_zip.country.id
|
postal_code.subdivision else None)
|
||||||
values['subdivision'] = (country_zip.subdivision.id if
|
|
||||||
country_zip.subdivision else None)
|
|
||||||
else:
|
else:
|
||||||
values['zip'] = None
|
values['postal_code'] = None
|
||||||
values['city'] = None
|
values['city'] = None
|
||||||
return values
|
return values
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, vlist):
|
def create(cls, vlist):
|
||||||
CountryZip = Pool().get('country.zip')
|
|
||||||
new_vlist = []
|
new_vlist = []
|
||||||
for values in vlist:
|
for values in vlist:
|
||||||
new_vlist.append(cls.update_zip_values(CountryZip, values))
|
new_vlist.append(cls.update_location_values(values))
|
||||||
return super(Address, cls).create(new_vlist)
|
return super(Address, cls).create(new_vlist)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def write(cls, *args):
|
def write(cls, *args):
|
||||||
CountryZip = Pool().get('country.zip')
|
|
||||||
actions = iter(args)
|
actions = iter(args)
|
||||||
new_args = []
|
new_args = []
|
||||||
for addresses, values in zip(actions, actions):
|
for addresses, values in zip(actions, actions):
|
||||||
new_args.append(addresses)
|
new_args.append(addresses)
|
||||||
new_args.append(cls.update_zip_values(CountryZip, values))
|
new_args.append(cls.update_location_values(values))
|
||||||
super(Address, cls).write(*new_args)
|
super(Address, cls).write(*new_args)
|
||||||
|
|
||||||
@fields.depends('country_zip')
|
@fields.depends('location')
|
||||||
def on_change_country_zip(self):
|
def on_change_location(self):
|
||||||
if self.country_zip:
|
if self.location:
|
||||||
self.zip = self.country_zip.zip
|
self.postal_code = self.location.postal_code
|
||||||
self.city = self.country_zip.city
|
self.city = self.location.city
|
||||||
self.country = self.country_zip.country
|
self.country = self.location.country
|
||||||
self.subdivision = self.country_zip.subdivision
|
self.subdivision = self.location.subdivision
|
||||||
else:
|
else:
|
||||||
self.zip = None
|
self.postal_code = None
|
||||||
self.city = None
|
self.city = None
|
||||||
|
|
||||||
|
|
||||||
class CountryZip(metaclass=PoolMeta):
|
class PostalCode(metaclass=PoolMeta):
|
||||||
__name__ = 'country.zip'
|
__name__ = 'country.postal_code'
|
||||||
|
|
||||||
def get_rec_name(self, name):
|
def get_rec_name(self, name):
|
||||||
res = []
|
res = []
|
||||||
if self.zip:
|
if self.postal_code:
|
||||||
res.append(self.zip)
|
res.append(self.postal_code)
|
||||||
if self.city:
|
if self.city:
|
||||||
res.append(self.city)
|
res.append(self.city)
|
||||||
res = [' '.join(res)]
|
res = [' '.join(res)]
|
||||||
|
@ -92,7 +96,7 @@ class CountryZip(metaclass=PoolMeta):
|
||||||
@classmethod
|
@classmethod
|
||||||
def search_rec_name(cls, name, clause):
|
def search_rec_name(cls, name, clause):
|
||||||
return ['OR',
|
return ['OR',
|
||||||
[('zip',) + tuple(clause[1:])],
|
[('postal_code',) + tuple(clause[1:])],
|
||||||
[('city',) + tuple(clause[1:])],
|
[('city',) + tuple(clause[1:])],
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -100,17 +104,17 @@ class CountryZip(metaclass=PoolMeta):
|
||||||
def write(cls, *args):
|
def write(cls, *args):
|
||||||
Address = Pool().get('party.address')
|
Address = Pool().get('party.address')
|
||||||
|
|
||||||
super(CountryZip, cls).write(*args)
|
super().write(*args)
|
||||||
|
|
||||||
actions = iter(args)
|
actions = iter(args)
|
||||||
fields = set(['zip', 'city', 'country', 'subdivision'])
|
fields = set(['postal_code', 'city', 'country', 'subdivision'])
|
||||||
to_update = []
|
to_update = []
|
||||||
for zips, values in zip(actions, actions):
|
for locations, values in zip(actions, actions):
|
||||||
intersec = set(values.keys()) & fields
|
intersec = set(values.keys()) & fields
|
||||||
if not intersec:
|
if not intersec:
|
||||||
continue
|
continue
|
||||||
addresses = Address.search([
|
addresses = Address.search([
|
||||||
('country_zip', 'in', [x.id for x in zips]),
|
('location', 'in', [x.id for x in locations]),
|
||||||
])
|
])
|
||||||
to_update.append(addresses)
|
to_update.append(addresses)
|
||||||
address_values = {}
|
address_values = {}
|
||||||
|
|
22
party.xml
22
party.xml
|
@ -45,21 +45,21 @@
|
||||||
<field name="action" ref="act_subdivision_form2"/>
|
<field name="action" ref="act_subdivision_form2"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="ir.action.act_window" id="act_zip_form">
|
<record model="ir.action.act_window" id="act_postal_code_form">
|
||||||
<field name="name">Zips</field>
|
<field name="name">Postal Codes</field>
|
||||||
<field name="res_model">country.zip</field>
|
<field name="res_model">country.postal_code</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.action.act_window.view" id="act_zip_form_view1">
|
<record model="ir.action.act_window.view" id="act_postal_code_form_view1">
|
||||||
<field name="sequence" eval="10"/>
|
<field name="sequence" eval="10"/>
|
||||||
<field name="view" ref="country.zip_view_list"/>
|
<field name="view" ref="country.postal_code_view_list"/>
|
||||||
<field name="act_window" ref="act_zip_form"/>
|
<field name="act_window" ref="act_postal_code_form"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.action.act_window.view" id="act_zip_form_view2">
|
<record model="ir.action.act_window.view" id="act_postal_code_form_view2">
|
||||||
<field name="sequence" eval="20"/>
|
<field name="sequence" eval="20"/>
|
||||||
<field name="view" ref="country.zip_view_form"/>
|
<field name="view" ref="country.postal_code_view_form"/>
|
||||||
<field name="act_window" ref="act_zip_form"/>
|
<field name="act_window" ref="act_postal_code_form"/>
|
||||||
</record>
|
</record>
|
||||||
<menuitem parent="country.menu_country_form" action="act_zip_form"
|
<menuitem parent="country.menu_country_form" action="act_postal_code_form"
|
||||||
id="menu_zip_form"/>
|
id="menu_postal_code_form"/>
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
|
|
@ -18,7 +18,7 @@ class PartyZipTestCase(ModuleTestCase):
|
||||||
Address = pool.get('party.address')
|
Address = pool.get('party.address')
|
||||||
Country = pool.get('country.country')
|
Country = pool.get('country.country')
|
||||||
Subdivision = pool.get('country.subdivision')
|
Subdivision = pool.get('country.subdivision')
|
||||||
Zip = pool.get('country.zip')
|
PostalCode = pool.get('country.postal_code')
|
||||||
|
|
||||||
country1, country2 = Country.create([{
|
country1, country2 = Country.create([{
|
||||||
'name': 'Country 1',
|
'name': 'Country 1',
|
||||||
|
@ -36,13 +36,13 @@ class PartyZipTestCase(ModuleTestCase):
|
||||||
'type': 'area',
|
'type': 'area',
|
||||||
'country': country2.id,
|
'country': country2.id,
|
||||||
}])
|
}])
|
||||||
zip1, zip2 = Zip.create([{
|
postal_code1, postal_code2 = PostalCode.create([{
|
||||||
'zip': 'zip1',
|
'postal_code': 'postal_code1',
|
||||||
'city': 'city1',
|
'city': 'city1',
|
||||||
'country': country1.id,
|
'country': country1.id,
|
||||||
'subdivision': subdivision1.id,
|
'subdivision': subdivision1.id,
|
||||||
}, {
|
}, {
|
||||||
'zip': 'zip2',
|
'postal_code': 'postal_code2',
|
||||||
'city': 'city2',
|
'city': 'city2',
|
||||||
'country': country2.id,
|
'country': country2.id,
|
||||||
'subdivision': subdivision2.id,
|
'subdivision': subdivision2.id,
|
||||||
|
@ -55,32 +55,32 @@ class PartyZipTestCase(ModuleTestCase):
|
||||||
'street': 'St sample, 15',
|
'street': 'St sample, 15',
|
||||||
'city': 'City',
|
'city': 'City',
|
||||||
}])
|
}])
|
||||||
self.assertEqual(address.zip, None)
|
self.assertEqual(address.postal_code, None)
|
||||||
self.assertEqual(address.city, 'City')
|
self.assertEqual(address.city, 'City')
|
||||||
Address.write([address], {
|
Address.write([address], {
|
||||||
'country_zip': zip1.id,
|
'location': postal_code1.id,
|
||||||
})
|
})
|
||||||
self.assertEqual(address.zip, 'zip1')
|
self.assertEqual(address.postal_code, 'postal_code1')
|
||||||
self.assertEqual(address.city, 'city1')
|
self.assertEqual(address.city, 'city1')
|
||||||
self.assertEqual(address.country.id, country1.id)
|
self.assertEqual(address.country.id, country1.id)
|
||||||
self.assertEqual(address.subdivision.id, subdivision1.id)
|
self.assertEqual(address.subdivision.id, subdivision1.id)
|
||||||
|
|
||||||
Address.write([address], {
|
Address.write([address], {
|
||||||
'country_zip': zip2.id,
|
'location': postal_code2.id,
|
||||||
})
|
})
|
||||||
self.assertEqual(address.zip, 'zip2')
|
self.assertEqual(address.postal_code, 'postal_code2')
|
||||||
self.assertEqual(address.city, 'city2')
|
self.assertEqual(address.city, 'city2')
|
||||||
self.assertEqual(address.country.id, country2.id)
|
self.assertEqual(address.country.id, country2.id)
|
||||||
self.assertEqual(address.subdivision.id, subdivision2.id)
|
self.assertEqual(address.subdivision.id, subdivision2.id)
|
||||||
|
|
||||||
Zip.write([zip2], {
|
PostalCode.write([postal_code2], {
|
||||||
'zip': 'ZIP 3',
|
'postal_code': 'Postal Code 3',
|
||||||
'city': 'CITY 3',
|
'city': 'CITY 3',
|
||||||
'country': country1.id,
|
'country': country1.id,
|
||||||
'subdivision': subdivision1.id,
|
'subdivision': subdivision1.id,
|
||||||
})
|
})
|
||||||
address, = Address.browse([address.id])
|
address, = Address.browse([address.id])
|
||||||
self.assertEqual(address.zip, 'ZIP 3')
|
self.assertEqual(address.postal_code, 'Postal Code 3')
|
||||||
self.assertEqual(address.city, 'CITY 3')
|
self.assertEqual(address.city, 'CITY 3')
|
||||||
self.assertEqual(address.country.id, country1.id)
|
self.assertEqual(address.country.id, country1.id)
|
||||||
self.assertEqual(address.subdivision.id, subdivision1.id)
|
self.assertEqual(address.subdivision.id, subdivision1.id)
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
this repository contains the full copyright notices and license terms. -->
|
this repository contains the full copyright notices and license terms. -->
|
||||||
<data>
|
<data>
|
||||||
<xpath expr="/form/label[@name='zip']" position="before">
|
<xpath expr="/form/label[@name='postal_code']" position="before">
|
||||||
<label name="country_zip"/>
|
<label name="location"/>
|
||||||
<field name="country_zip" colspan="3"/>
|
<field name="location" colspan="3"/>
|
||||||
<newline/>
|
<newline/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</data>
|
</data>
|
||||||
|
|
Loading…
Reference in New Issue