From 66269d04622b3bb86c899505c93daef2e11ecaf8 Mon Sep 17 00:00:00 2001 From: kdeterme Date: Fri, 7 Aug 2026 19:23:29 +0200 Subject: [PATCH] feat: add MapLibre visualization for inspections list via geolocated asset markers in a modal --- streetup/assets/models/inspection.py | 18 ++ .../templates/assets/inspections_list.html | 276 +++++++++++++++++- streetup/assets/views/inspections.py | 6 +- 3 files changed, 297 insertions(+), 3 deletions(-) diff --git a/streetup/assets/models/inspection.py b/streetup/assets/models/inspection.py index 7d47827..9a732cd 100644 --- a/streetup/assets/models/inspection.py +++ b/streetup/assets/models/inspection.py @@ -154,6 +154,24 @@ class AssetInspection(models.Model): return _get_asset_thematic(self.asset) return None + @property + def lon_lat(self): + """Retourne les coordonnées (lon, lat) WGS84 du centroïde de la cible s'il est géolocalisé.""" + if not self.asset: + return None + if hasattr(self.asset, 'lon') and hasattr(self.asset, 'lat') and self.asset.lon and self.asset.lat: + return (float(self.asset.lon), float(self.asset.lat)) + if hasattr(self.asset, 'geom') and self.asset.geom: + g = self.asset.geom + if g.srid and g.srid != 4326: + try: + g = g.transform(4326, clone=True) + except Exception: + pass + centroid = g.centroid + return (float(centroid.x), float(centroid.y)) + return None + @property def thematic_icon(self): th = self.thematic diff --git a/streetup/assets/templates/assets/inspections_list.html b/streetup/assets/templates/assets/inspections_list.html index dbb47b0..ed0389f 100644 --- a/streetup/assets/templates/assets/inspections_list.html +++ b/streetup/assets/templates/assets/inspections_list.html @@ -1,8 +1,12 @@ {% extends base_template|default:"base.html" %} -{% load i18n %} +{% load i18n static l10n %} {% block title %}{% translate "Inspections d'assets" %}{% endblock %} +{% block extra_css %} + +{% endblock %} + {% block content %}
@@ -91,6 +95,17 @@
+ + + {% if inspections %}
{% for insp in inspections %} @@ -394,4 +409,263 @@ document.addEventListener('DOMContentLoaded', function() { }); }); + + + + + {% endblock %} diff --git a/streetup/assets/views/inspections.py b/streetup/assets/views/inspections.py index a02dbc8..2a16b66 100644 --- a/streetup/assets/views/inspections.py +++ b/streetup/assets/views/inspections.py @@ -21,7 +21,8 @@ def get_user_inspectable_thematics(user): Si l'utilisateur n'a pas de UserConfig, retourne None. """ if hasattr(user, 'config') and user.config: - return user.config.get_inspectable_thematics().order_by('name_fr') + res = user.config.get_inspectable_thematics() + return res.order_by('name_fr') if res is not None else None return None @@ -31,7 +32,8 @@ def get_user_viewable_thematics(user): Si l'utilisateur n'a pas de UserConfig, retourne None. """ if hasattr(user, 'config') and user.config: - return user.config.get_viewable_assets_thematics().order_by('name_fr') + res = user.config.get_viewable_assets_thematics() + return res.order_by('name_fr') if res is not None else None return None