From 2bce258e32fd7f92745ebbc2d72d82d832d2ba88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 23 Oct 2008 12:05:14 +0200 Subject: [PATCH] Add on_change_with for google_maps_url --- address.py | 68 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/address.py b/address.py index ebe387bf92..70c0a6d1d2 100644 --- a/address.py +++ b/address.py @@ -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()