Files
tryton/address.py
T
2012-03-27 10:43:37 +02:00

65 lines
2.2 KiB
Python

#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
import urllib
from trytond.model import ModelView, ModelSQL, fields
from trytond.transaction import Transaction
from trytond.pool import Pool
class Address(ModelSQL, ModelView):
_name = 'party.address'
google_maps_url = fields.Function(fields.Char('Google Maps',
on_change_with=['street', 'streetbis', 'zip', 'city', 'country',
'subdivision']), 'get_google_maps_url')
def _get_url(self, vals):
lang = Transaction().language[:2]
url = ''
for i in ['street', 'streetbis', 'zip', 'city',
'country', 'subdivision']:
if vals.get(i):
if isinstance(vals[i], str):
url += ' ' + vals[i].decode('utf-8')
else:
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, vals):
country_obj = Pool().get('country.country')
subdivision_obj = Pool().get('country.subdivision')
vals = vals.copy()
if vals.get('country'):
country = country_obj.browse(vals['country'])
vals['country'] = country.name
if vals.get('subdivision'):
subdivision = subdivision_obj.browse(vals['subdivision'])
vals['subdivision'] = subdivision.name
return self._get_url(vals)
def get_google_maps_url(self, ids, name):
res = {}
for address in self.browse(ids):
vals = {
'street': address.street,
'streetbis': address.streetbis,
'zip': address.zip,
'city': address.city,
'country': address.country and address.country.name or None,
'subdivision': address.subdivision and \
address.subdivision.name or None,
}
res[address.id] = self._get_url(vals)
return res
Address()