mirror of
https://github.com/NaN-tic/trytond-country_zip.git
synced 2023-12-14 07:42:54 +01:00
Correctly set on_change attribute in zip field and refactor on_change function.
This commit is contained in:
parent
2ce3e3d6a2
commit
924aa07df1
33
address.py
33
address.py
|
@ -8,17 +8,19 @@ from trytond.pool import Pool, PoolMeta
|
||||||
__all__ = ['Address']
|
__all__ = ['Address']
|
||||||
__metaclass__ = PoolMeta
|
__metaclass__ = PoolMeta
|
||||||
|
|
||||||
STATES = {
|
|
||||||
'readonly': ~Eval('active'),
|
|
||||||
}
|
|
||||||
DEPENDS = ['active']
|
|
||||||
|
|
||||||
|
|
||||||
class Address:
|
class Address:
|
||||||
"Address"
|
"Address"
|
||||||
__name__ = 'party.address'
|
__name__ = 'party.address'
|
||||||
zip = fields.Char('Zip', states=STATES, depends=DEPENDS,
|
|
||||||
on_change=['zip', 'city', 'subdivision', 'country'])
|
@classmethod
|
||||||
|
def __setup__(cls):
|
||||||
|
super(Address, cls).__setup__()
|
||||||
|
if cls.zip.on_change is None:
|
||||||
|
cls.zip.on_change = []
|
||||||
|
for field in ('zip', 'city', 'subdivision', 'country'):
|
||||||
|
if not field in cls.zip.on_change:
|
||||||
|
cls.zip.on_change.append(field)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def default_zip():
|
def default_zip():
|
||||||
|
@ -33,13 +35,12 @@ class Address:
|
||||||
Subdivision = Pool().get('country.subdivision')
|
Subdivision = Pool().get('country.subdivision')
|
||||||
|
|
||||||
if self.zip:
|
if self.zip:
|
||||||
country_zips = Zip.search_read([('zip','=',self.zip)])
|
zips = Zip.search([('zip', '=', self.zip)])
|
||||||
country_zip = country_zips and country_zips[0] or False
|
if zips:
|
||||||
if country_zip:
|
zip_ = zips[0]
|
||||||
res['city'] = country_zip['city']
|
res['city'] = zip_.city
|
||||||
if country_zip.get('subdivision'):
|
if zip_.subdivision:
|
||||||
subdivisions = Subdivision.read([country_zip['subdivision']])
|
res['subdivision'] = zip_.subdivision.id
|
||||||
res['subdivision'] = country_zip['subdivision']
|
res['country'] = (zip_.subdivision.country.id
|
||||||
res['country'] = subdivisions[0]['country']
|
if zip_.subdivision.country else None)
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
Loading…
Reference in a new issue