Browse Source

Uses URL with latitude and longitude when base_geolocalize is installed and the partner has the appropriate info

pull/134/head
Alexis de Lattre 9 years ago
parent
commit
658dc67d6b
  1. 3
      partner_address_on_map/__openerp__.py
  2. 16
      partner_address_on_map/map_url_data.xml
  3. 6
      partner_address_on_map/map_url_view.xml
  4. 44
      partner_address_on_map/partner_address_on_map.py

3
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'],

16
partner_address_on_map/map_url_data.xml

@ -10,27 +10,33 @@
<record id="google_maps" model="map.url">
<field name="name">Google Maps</field>
<field name="url">https://maps.google.com/maps?oi=map&amp;q=</field>
<field name="address_url">https://www.google.com/maps?ie=UTF8&amp;q=</field>
<field name="lat_lon_url">https://www.google.com/maps?z=15&amp;q={LATITUDE},{LONGITUDE}</field>
</record>
<record id="openstreetmap" model="map.url">
<field name="name">OpenStreetMap</field>
<field name="url">https://nominatim.openstreetmap.org/search?q=</field>
<field name="address_url">https://nominatim.openstreetmap.org/search?q=</field>
<field name="lat_lon_url">https://www.openstreetmap.org/?zoom=15&amp;mlat={LATITUDE}&amp;mlon={LONGITUDE}</field>
</record>
<record id="openstreetmap_fr" model="map.url">
<field name="name">OpenStreetMap FR</field>
<field name="url">http://tile.openstreetmap.fr/?q=</field>
<field name="address_url">http://tile.openstreetmap.fr/?q=</field>
<field name="lat_lon_url">http://tile.openstreetmap.fr/?zoom=15&amp;lat={LATITUDE}&amp;lon={LONGITUDE}</field>
</record>
<record id="bing_maps" model="map.url">
<field name="name">Bing Maps</field>
<field name="url">https://www.bing.com/maps/default.aspx?rtp=adr.</field>
<field name="address_url">https://www.bing.com/maps/default.aspx?rtp=adr.</field>
<field name="lat_lon_url">https://www.bing.com/maps/default.aspx?cp={LATITUDE}~{LONGITUDE}&amp;lvl=15</field>
</record>
<record id="here" model="map.url">
<field name="name">Here Maps</field>
<field name="url">https://here.com/search/</field>
<field name="address_url">https://here.com/search/</field>
<field name="lat_lon_url">https://www.here.com/?map={LATITUDE},{LONGITUDE},15,normal</field>
<!-- TODO : for here maps, try to find a lat_lon_url with dot -->
</record>
</data>

6
partner_address_on_map/map_url_view.xml

@ -15,7 +15,8 @@
<form string="Map Provider">
<group name="main">
<field name="name"/>
<field name="url"/>
<field name="address_url"/>
<field name="lat_lon_url"/>
</group>
</form>
</field>
@ -27,7 +28,8 @@
<field name="arch" type="xml">
<tree string="Map Providers">
<field name="name"/>
<field name="url"/>
<field name="address_url"/>
<field name="lat_lon_url"/>
</tree>
</field>
</record>

44
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,

Loading…
Cancel
Save