Correctly set on_change attribute in zip field and refactor on_change function.

This commit is contained in:
Albert Cervera i Areny 2013-10-17 11:47:39 +02:00
parent 2ce3e3d6a2
commit 924aa07df1

View file

@ -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