From 658dc67d6b02082adc07a31ef05e4e542a3d1266 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 18 Jun 2015 23:53:19 +0200 Subject: [PATCH] Uses URL with latitude and longitude when base_geolocalize is installed and the partner has the appropriate info --- partner_address_on_map/__openerp__.py | 3 +- partner_address_on_map/map_url_data.xml | 16 ++++--- partner_address_on_map/map_url_view.xml | 6 ++- .../partner_address_on_map.py | 44 ++++++++++++++----- 4 files changed, 49 insertions(+), 20 deletions(-) diff --git a/partner_address_on_map/__openerp__.py b/partner_address_on_map/__openerp__.py index eea25566b..320395746 100644 --- a/partner_address_on_map/__openerp__.py +++ b/partner_address_on_map/__openerp__.py @@ -26,7 +26,8 @@ 'version': '0.1', 'category': 'Contacts', 'license': 'AGPL-3', - 'summary': 'Add Map button on partner form to open GMaps, OSM or others', + 'summary': + 'Add Map button on partner form to open GMaps, OSM, Bing and others', 'author': 'Akretion,Odoo Community Association (OCA)', 'website': 'http://www.akretion.com', 'depends': ['base'], diff --git a/partner_address_on_map/map_url_data.xml b/partner_address_on_map/map_url_data.xml index ecd4bb68a..500a71aee 100644 --- a/partner_address_on_map/map_url_data.xml +++ b/partner_address_on_map/map_url_data.xml @@ -10,27 +10,33 @@ Google Maps - https://maps.google.com/maps?oi=map&q= + https://www.google.com/maps?ie=UTF8&q= + https://www.google.com/maps?z=15&q={LATITUDE},{LONGITUDE} OpenStreetMap - https://nominatim.openstreetmap.org/search?q= + https://nominatim.openstreetmap.org/search?q= + https://www.openstreetmap.org/?zoom=15&mlat={LATITUDE}&mlon={LONGITUDE} OpenStreetMap FR - http://tile.openstreetmap.fr/?q= + http://tile.openstreetmap.fr/?q= + http://tile.openstreetmap.fr/?zoom=15&lat={LATITUDE}&lon={LONGITUDE} Bing Maps - https://www.bing.com/maps/default.aspx?rtp=adr. + https://www.bing.com/maps/default.aspx?rtp=adr. + https://www.bing.com/maps/default.aspx?cp={LATITUDE}~{LONGITUDE}&lvl=15 Here Maps - https://here.com/search/ + https://here.com/search/ + https://www.here.com/?map={LATITUDE},{LONGITUDE},15,normal + diff --git a/partner_address_on_map/map_url_view.xml b/partner_address_on_map/map_url_view.xml index 88fb69c87..b7d2c445c 100644 --- a/partner_address_on_map/map_url_view.xml +++ b/partner_address_on_map/map_url_view.xml @@ -15,7 +15,8 @@
- + +
@@ -27,7 +28,8 @@ - + + diff --git a/partner_address_on_map/partner_address_on_map.py b/partner_address_on_map/partner_address_on_map.py index 9936e3fcc..63e54745d 100644 --- a/partner_address_on_map/partner_address_on_map.py +++ b/partner_address_on_map/partner_address_on_map.py @@ -29,7 +29,14 @@ class MapUrl(models.Model): _description = 'Map System' name = fields.Char(string='Map Provider', required=True) - url = fields.Char(string='URL', required=True) + address_url = fields.Char( + string='URL that uses the address', + help="Odoo will add the address as string at the end of this URL.") + lat_lon_url = fields.Char( + string='URL that uses latitude and longitude', + help="In this URL, {LATITUDE} will be replaced by the latitude and " + "{LONGITUDE} will be replaced by the longitude (requires the module " + "base_geolocalize)") class ResUsers(models.Model): @@ -58,17 +65,30 @@ class ResPartner(models.Model): raise Warning( _('Missing map provider: ' 'you should set it in your preferences.')) - url = self.env.user.context_map_url_id.url - if self.street: - url += self.street - if self.street2: - url += ' ' + self.street2 - if self.city: - url += ' ' + self.city - if self.state_id: - url += ' ' + self.state_id.name - if self.country_id: - url += ' ' + self.country_id.name + map_url = self.env.user.context_map_url_id + if ( + map_url.lat_lon_url and + hasattr(self, 'partner_latitude') and + self.partner_latitude and self.partner_longitude): + url = map_url.lat_lon_url.replace( + '{LATITUDE}', unicode(self.partner_latitude)) + url = url.replace('{LONGITUDE}', unicode(self.partner_longitude)) + else: + if not map_url.address_url: + raise Warning( + _("Missing parameter 'URL that uses the address' " + "for map provider '%s'.") % map_url.name) + url = map_url.address_url + if self.street: + url += self.street + if self.street2: + url += ' ' + self.street2 + if self.city: + url += ' ' + self.city + if self.state_id: + url += ' ' + self.state_id.name + if self.country_id: + url += ' ' + self.country_id.name return { 'type': 'ir.actions.act_url', 'url': url,