Add on_change_with for google_maps_url
This commit is contained in:
+47
-21
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user