Add on_change_with for google_maps_url

This commit is contained in:
Cédric Krier
2008-10-23 12:05:14 +02:00
parent dc05f1bf46
commit 2bce258e32
+47 -21
View File
@@ -7,32 +7,58 @@ class Address(OSV):
_name = 'party.address'
google_maps_url = fields.Function('get_google_maps_url', type="char",
string="Google Maps")
string="Google Maps", on_change_with=['street', 'streetbis',
'zip', 'city', 'country', 'subdivision'])
def get_google_maps_url(self, cursor, user, ids, name, arg, context=None):
def _get_url(self, cursor, user, vals, context=None):
if context is None:
context = {}
res = {}
lang = context.get('language', 'en_US')[:2]
url = ''
for i in ['street', 'streetbis', 'zip', 'city',
'country', 'subdivision']:
if vals.get(i):
url += ' ' + vals[i]
if url.strip():
url = 'http://maps.google.com/maps?hl=%s&q=%s' % \
(lang, urllib.quote(url.strip().encode('utf-8')))
else:
url = ''
return url
def on_change_with_google_maps_url(self, cursor, user, ids, vals,
context=None):
country_obj = self.pool.get('country.country')
subdivision_obj = self.pool.get('country.subdivision')
vals = vals.copy()
if vals.get('country'):
country = country_obj.browse(cursor, user, vals['country'],
context=context)
vals['country'] = country.name
if vals.get('subdivision'):
subdivision = subdivision_obj.browse(cursor, user,
vals['subdivision'], context=context)
vals['subdivision'] = subdivision.name
return self._get_url(cursor, user, vals, context=context)
def get_google_maps_url(self, cursor, user, ids, name, arg, context=None):
res = {}
for address in self.browse(cursor, user, ids, context=context):
query = ''
if address.street:
query += ' ' + address.street
if address.streetbis:
query += ' ' + address.streetbis
if address.zip:
query += ' ' + address.zip
if address.city:
query += ' ' + address.city
if address.country:
query += ' ' + address.country.name
if address.subdivision:
query += ' ' + address.subdivision.name
if query.strip():
res[address.id] = 'http://maps.google.com/maps?hl=%s&q=%s' % \
(lang, urllib.quote(query.strip().encode('utf-8')))
else:
res[address.id] = ''
vals = {
'street': address.street,
'streetbis': address.streetbis,
'zip': address.zip,
'city': address.city,
'country': address.country and address.country.name or False,
'subdivision': address.subdivision and \
address.subdivision.name or False,
}
res[address.id] = self._get_url(cursor, user, vals,
context=context)
return res
Address()