summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sassine <richardsassine@tutanota.com>2021-06-02 13:55:28 +0300
committerRichard Sassine <richardsassine@tutanota.com>2021-06-02 13:55:28 +0300
commit1240f169a3cae7b931b16c7c1f45fe161757acc2 (patch)
tree5780d204dcc6233c80e9a6f13aac65fd1ee8f249
parent3a8776ee0342f47a57bcc9365499ebd5d3d7ee1c (diff)
Added coordinate fields to Customer Portal
-rw-r--r--geoengine_partner/__init__.py1
-rw-r--r--geoengine_partner/__manifest__.py2
-rw-r--r--geoengine_partner/__pycache__/__init__.cpython-36.pycbin188 -> 222 bytes
-rw-r--r--geoengine_partner/controllers/__init__.py1
-rw-r--r--geoengine_partner/controllers/__pycache__/__init__.cpython-36.pycbin0 -> 198 bytes
-rw-r--r--geoengine_partner/controllers/__pycache__/main.cpython-36.pycbin0 -> 557 bytes
-rw-r--r--geoengine_partner/controllers/main.py5
-rw-r--r--geoengine_partner/models/__pycache__/partner.cpython-36.pycbin1542 -> 1732 bytes
-rw-r--r--geoengine_partner/models/partner.py17
-rw-r--r--geoengine_partner/requirements.txt1
-rw-r--r--geoengine_partner/views/portal_templates.xml19
11 files changed, 39 insertions, 7 deletions
diff --git a/geoengine_partner/__init__.py b/geoengine_partner/__init__.py
index 0650744..f7209b1 100644
--- a/geoengine_partner/__init__.py
+++ b/geoengine_partner/__init__.py
@@ -1 +1,2 @@
from . import models
+from . import controllers
diff --git a/geoengine_partner/__manifest__.py b/geoengine_partner/__manifest__.py
index eadc135..37967de 100644
--- a/geoengine_partner/__manifest__.py
+++ b/geoengine_partner/__manifest__.py
@@ -8,7 +8,7 @@
"license": "AGPL-3",
"website": "https://github.com/OCA/geospatial",
"depends": ["base", "base_geoengine", "base_geolocalize"],
- "data": ["views/partner.xml"],
+ "data": ["views/partner.xml", "views/portal_templates.xml"],
"installable": True,
"application": True,
}
diff --git a/geoengine_partner/__pycache__/__init__.cpython-36.pyc b/geoengine_partner/__pycache__/__init__.cpython-36.pyc
index 2c8c710..b3a9a3d 100644
--- a/geoengine_partner/__pycache__/__init__.cpython-36.pyc
+++ b/geoengine_partner/__pycache__/__init__.cpython-36.pyc
Binary files differ
diff --git a/geoengine_partner/controllers/__init__.py b/geoengine_partner/controllers/__init__.py
new file mode 100644
index 0000000..12a7e52
--- /dev/null
+++ b/geoengine_partner/controllers/__init__.py
@@ -0,0 +1 @@
+from . import main
diff --git a/geoengine_partner/controllers/__pycache__/__init__.cpython-36.pyc b/geoengine_partner/controllers/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 0000000..3f48558
--- /dev/null
+++ b/geoengine_partner/controllers/__pycache__/__init__.cpython-36.pyc
Binary files differ
diff --git a/geoengine_partner/controllers/__pycache__/main.cpython-36.pyc b/geoengine_partner/controllers/__pycache__/main.cpython-36.pyc
new file mode 100644
index 0000000..f9d571d
--- /dev/null
+++ b/geoengine_partner/controllers/__pycache__/main.cpython-36.pyc
Binary files differ
diff --git a/geoengine_partner/controllers/main.py b/geoengine_partner/controllers/main.py
new file mode 100644
index 0000000..cbeecdf
--- /dev/null
+++ b/geoengine_partner/controllers/main.py
@@ -0,0 +1,5 @@
+from odoo import http
+from odoo.addons.portal.controllers.portal import CustomerPortal
+
+class CustomerPortalExtended(CustomerPortal):
+ OPTIONAL_BILLING_FIELDS = ["zipcode", "state_id", "vat", "company_name", "partner_longitude", "partner_latitude"]
diff --git a/geoengine_partner/models/__pycache__/partner.cpython-36.pyc b/geoengine_partner/models/__pycache__/partner.cpython-36.pyc
index 553a19f..5364b33 100644
--- a/geoengine_partner/models/__pycache__/partner.cpython-36.pyc
+++ b/geoengine_partner/models/__pycache__/partner.cpython-36.pyc
Binary files differ
diff --git a/geoengine_partner/models/partner.py b/geoengine_partner/models/partner.py
index fee43c2..5f2151e 100644
--- a/geoengine_partner/models/partner.py
+++ b/geoengine_partner/models/partner.py
@@ -13,6 +13,12 @@ class ResPartner(models.Model):
geo_point = fields.GeoPoint("Geopoint")
+ """
+ TODO: Implement a call to GeoPoint.from_latlon(...)
+ @api.onchange('partner_latitude', 'partner_longitude')
+ def _onchange_coordinates(self):
+ """
+
@api.onchange('geo_point')
def _onchange_geo_point(self):
odoo_proj = 'epsg:3857'
@@ -20,19 +26,18 @@ class ResPartner(models.Model):
transformer = Transformer.from_crs(odoo_proj, gps_proj)
gps_point = transformer.transform(
self.geo_point.context[0], self.geo_point.context[1])
- self.partner_longitude = float(gps_point[0])
- self.partner_latitude = float(gps_point[1])
+ self.partner_longitude = gps_point[0]
+ self.partner_latitude = gps_point[1]
self.date_localization = datetime.today()
def navigate_from_noc(self):
- noc_longitude = 34.1244
- noc_latitude = 35.6666
+ NOC_LONGITUDE = 34.1244
+ NOC_LATITUDE = 35.6666
longitude = self.partner_longitude
latitude = self.partner_latitude
- zoom_level = 17
url = "https://www.openstreetmap.org/directions?engine=" + \
- f"fossgis_osrm_car&route={noc_longitude}%2C{noc_latitude}" + \
+ f"fossgis_osrm_car&route={NOC_LONGITUDE}%2C{NOC_LATITUDE}" + \
f"%3B{longitude}%2C{latitude}"
return {
'type': 'ir.actions.act_url',
diff --git a/geoengine_partner/requirements.txt b/geoengine_partner/requirements.txt
new file mode 100644
index 0000000..89db7aa
--- /dev/null
+++ b/geoengine_partner/requirements.txt
@@ -0,0 +1 @@
+pyproj
diff --git a/geoengine_partner/views/portal_templates.xml b/geoengine_partner/views/portal_templates.xml
new file mode 100644
index 0000000..a29584f
--- /dev/null
+++ b/geoengine_partner/views/portal_templates.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data>
+ <template id="portal_geo_fields" inherit_id="portal.portal_my_details">
+ <xpath expr="//div[hasclass('col-lg-8')]//div[hasclass('row')]" position="inside">
+ <div class="clearfix"/>
+ <div t-attf-class="form-group #{error.get('partner_longitude') and 'o_has_error' or ''} col-xl-6">
+ <label class="col-form-label label-optional" for="partner_longitude">Longitude</label>
+ <input type="text" name="partner_longitude" t-attf-class="form-control #{error.get('partner_longitude') and 'is-invalid' or ''}" t-att-value="partner_longitude or partner.partner_longitude" />
+ </div>
+ <div t-attf-class="form-group #{error.get('partner_latitude') and 'o_has_error' or ''} col-xl-6">
+ <label class="col-form-label label-optional" for="partner_latitude">Longitude</label>
+ <input type="text" name="partner_latitude" t-attf-class="form-control #{error.get('partner_latitude') and 'is-invalid' or ''}" t-att-value="partner_latitude or partner.partner_latitude" />
+ </div>
+ <a role="button" href='https://www.openstreetmap.org/#map=9/33.7620/35.8827' class="btn btn-sm btn-link"><i class="fa fa-map"/> Get Longitude/Latitude Manually</a>
+ </xpath>
+ </template>
+ </data>
+</odoo>