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'Zone polygon map preview' ) @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