diff --git a/odoo/addons/dsrpt_repair_config/__manifest__.py b/odoo/addons/dsrpt_repair_config/__manifest__.py
index 8cc5fc0..c0a8f64 100644
--- a/odoo/addons/dsrpt_repair_config/__manifest__.py
+++ b/odoo/addons/dsrpt_repair_config/__manifest__.py
@@ -9,6 +9,7 @@
"data": [
"security/groups.xml",
"security/ir.model.access.csv",
+ "data/mapbox_token.xml",
"data/repair_fsm_zone_data_atlanta.xml",
"views/repair_fsm_zone_view_list.xml",
"views/repair_fsm_zone_view_form.xml",
diff --git a/odoo/addons/dsrpt_repair_config/data/mapbox_token.xml b/odoo/addons/dsrpt_repair_config/data/mapbox_token.xml
new file mode 100644
index 0000000..7859792
--- /dev/null
+++ b/odoo/addons/dsrpt_repair_config/data/mapbox_token.xml
@@ -0,0 +1,7 @@
+
+
+
+ dsrpt_repair_config.mapbox_token
+ pk.eyJ1IjoidmVpa2FiIiwiYSI6ImNtaXcxNGxpZTI3bTEza3EyeWpmZTk1MXoifQ.JtuxUckpXUXpQmhcn-uGqQ
+
+
diff --git a/odoo/addons/dsrpt_repair_config/data/repair_fsm_zone_data_atlanta.xml b/odoo/addons/dsrpt_repair_config/data/repair_fsm_zone_data_atlanta.xml
index 1af7b36..10fe55f 100644
--- a/odoo/addons/dsrpt_repair_config/data/repair_fsm_zone_data_atlanta.xml
+++ b/odoo/addons/dsrpt_repair_config/data/repair_fsm_zone_data_atlanta.xml
@@ -2,11 +2,9 @@
Atlanta Metro
- ATL
active
- True
diff --git a/odoo/addons/dsrpt_repair_config/models/fsm_zone.py b/odoo/addons/dsrpt_repair_config/models/fsm_zone.py
index a2545eb..6ed4a01 100644
--- a/odoo/addons/dsrpt_repair_config/models/fsm_zone.py
+++ b/odoo/addons/dsrpt_repair_config/models/fsm_zone.py
@@ -12,7 +12,6 @@ class RepairFsmZone(models.Model):
_inherit = ["mail.thread", "mail.activity.mixin"]
name = fields.Char(required=True, tracking=True)
- code = fields.Char(tracking=True)
polygon_geojson = fields.Text(
string="Polygon (GeoJSON)",
tracking=True,
@@ -33,7 +32,6 @@ class RepairFsmZone(models.Model):
tracking=True,
group_expand="_group_expand_states",
)
- active = fields.Boolean(default=True, tracking=True)
def _group_expand_states(self, states, domain, order):
return [key for key, _label in self._fields["state"].selection]
@@ -43,13 +41,13 @@ class RepairFsmZone(models.Model):
if not rec.polygon_geojson:
raise ValidationError("Polygon is required before activating the FSM Zone.")
rec._extract_polygon_points()
- self.write({"state": "active", "active": True})
+ self.write({"state": "active"})
def action_archive(self):
- self.write({"state": "archived", "active": False})
+ self.write({"state": "archived"})
def action_reset_draft(self):
- self.write({"state": "draft", "active": True})
+ self.write({"state": "draft"})
@staticmethod
def _point_in_polygon(longitude, latitude, points):
@@ -128,14 +126,29 @@ class RepairFsmZone(models.Model):
@api.depends("polygon_geojson")
def _compute_polygon_map_preview(self):
+ token = self.env["ir.config_parameter"].sudo().get_param("dsrpt_repair_config.mapbox_token")
for rec in self:
if not rec.polygon_geojson:
rec.polygon_map_preview = "
No polygon yet.
"
continue
- encoded = quote(rec.polygon_geojson)
+ if not token:
+ rec.polygon_map_preview = "Set Mapbox token in system parameter dsrpt_repair_config.mapbox_token.
"
+ continue
+ try:
+ data = json.loads(rec.polygon_geojson)
+ except Exception:
+ rec.polygon_map_preview = "Invalid polygon JSON.
"
+ continue
+ feature = {"type": "Feature", "geometry": data, "properties": {"name": rec.name or "Zone"}}
+ overlay = quote(json.dumps(feature, separators=(",", ":")))
+ token_encoded = quote(token)
+ static_url = (
+ "https://api.mapbox.com/styles/v1/mapbox/streets-v12/static/"
+ f"geojson({overlay})/auto/1100x420?padding=40&access_token={token_encoded}"
+ )
rec.polygon_map_preview = (
- f''
+ f'
'
)
@api.constrains("polygon_geojson")
diff --git a/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_form.xml b/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_form.xml
index 8b5f08d..451596d 100644
--- a/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_form.xml
+++ b/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_form.xml
@@ -16,8 +16,6 @@
-
-
diff --git a/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_kanban.xml b/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_kanban.xml
index 780bd47..a00d26e 100644
--- a/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_kanban.xml
+++ b/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_kanban.xml
@@ -6,7 +6,6 @@
-
@@ -14,9 +13,6 @@
-
-
-
diff --git a/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_list.xml b/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_list.xml
index 8bf726c..eacc2a0 100644
--- a/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_list.xml
+++ b/odoo/addons/dsrpt_repair_config/views/repair_fsm_zone_view_list.xml
@@ -6,10 +6,8 @@
-
-
diff --git a/odoo/addons/dsrpt_repair_work_orders/models/work_order.py b/odoo/addons/dsrpt_repair_work_orders/models/work_order.py
index 0b7bd69..06ef749 100644
--- a/odoo/addons/dsrpt_repair_work_orders/models/work_order.py
+++ b/odoo/addons/dsrpt_repair_work_orders/models/work_order.py
@@ -66,7 +66,7 @@ class RepairWorkOrder(models.Model):
return self.service_latitude is not False and self.service_longitude is not False
def _find_zone_for_point(self, latitude, longitude):
- zones = self.env["repair.fsm.zone"].search([("active", "=", True), ("state", "=", "active")])
+ zones = self.env["repair.fsm.zone"].search([("state", "=", "active")])
for zone in zones:
if zone.contains_point(latitude, longitude):
return zone