From 244b16b3d369e07a119ce5ad2726d9d9506048c5 Mon Sep 17 00:00:00 2001 From: kdeterme Date: Wed, 30 Sep 2026 14:39:32 +0200 Subject: [PATCH] feat(trafficlights): add cable geometry copy, duplication modal and node editing hints in cross plan import MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add explanatory guidelines for cable node operations (double-click segment to insert node, double-click node to delete, drag to reposition) - Add floating reminder pill on map during cable editing mode - Add "Copier tracé..." dropdown on cable cards to import trace from other cables - Add "Appliquer aux autres câbles..." modal to duplicate active trace across multiple cables at once - Add direct map jump button on cable rows in comparative table - Include db_coords in compared_cables context to preserve pre-existing geometries - Add tests and update translations (fr, nl, en) --- loko/assets/locale/en/LC_MESSAGES/django.mo | Bin 114536 -> 116867 bytes loko/assets/locale/en/LC_MESSAGES/django.po | 81 ++++ loko/assets/locale/fr/LC_MESSAGES/django.mo | Bin 126198 -> 128760 bytes loko/assets/locale/fr/LC_MESSAGES/django.po | 81 ++++ loko/assets/locale/nl/LC_MESSAGES/django.mo | Bin 116876 -> 119401 bytes loko/assets/locale/nl/LC_MESSAGES/django.po | 81 ++++ .../trafficlights_import_cross_plan.html | 459 +++++++++++++++--- loko/assets/tests.py | 82 ++++ loko/assets/views/trafficlights.py | 20 + 9 files changed, 747 insertions(+), 57 deletions(-) diff --git a/loko/assets/locale/en/LC_MESSAGES/django.mo b/loko/assets/locale/en/LC_MESSAGES/django.mo index 4d3b7fe491c260d96ebac0021c9d0d1cf8c27f84..dda1a3848d971624dfc38c1eae3303a43a05bb9f 100644 GIT binary patch delta 39811 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 WESRjB7Vp`Ilht@rvu!DrGyWfeE;n8P delta 37668 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 translate "Non tracé" %} {% endif %} + {% if item.status != 'db_only' %} + + {% endif %} {{ item.deduced_model_name|default:"—" }} {{ item.db_model_name|default:"—" }} @@ -874,13 +879,19 @@
-
-
- {% translate "Tracé des câbles" %} +
+
+ + {% translate "Aide au tracé des câbles" %} +
-

- {% translate "Cliquez sur 'Tracer / Éditer' puis double-cliquez sur la carte pour tracer la ligne du câble." %} -

+
    +
  • {% translate "Tracer" %} : {% translate "Double-clic sur la carte pour ajouter un point." %}
  • +
  • {% translate "Ajouter un nœud" %} : {% translate "Double-clic sur un segment du câble." %}
  • +
  • {% translate "Supprimer un nœud" %} : {% translate "Double-clic sur un nœud (poignée orange)." %}
  • +
  • {% translate "Déplacer" %} : {% translate "Glisser-déposer les poignées pour ajuster." %}
  • +
  • {% translate "Copier tracé" %} : {% translate "Copiez le tracé d'un autre câble suivant le même trajet (ex: 48 et tel.)." %}
  • +
@@ -889,12 +900,23 @@
{{ item.name }} + + … +
{{ item.deduced_model_name }}
-
+
+
{% endif %} @@ -914,10 +936,17 @@
{% translate "Mode: Lecture" %} +
+
@@ -926,6 +955,46 @@
+ + + {% endif %}
@@ -1084,30 +1153,47 @@ document.addEventListener('DOMContentLoaded', () => { const tableView = document.getElementById('table-view'); const mapView = document.getElementById('map-view'); + function switchToMapView(targetTab, cableCodeToEdit) { + tableView.classList.remove('d-block'); + tableView.classList.add('d-none'); + + mapView.classList.remove('d-none'); + mapView.classList.add('d-block'); + + // Trigger MapLibre GL canvas resize recalculation + if (map) { + map.resize(); + } + + // Activate corresponding tab in map sidebar + if (targetTab === 'poles') { + const tabEl = document.getElementById('map-poles-tab'); + if (tabEl) new bootstrap.Tab(tabEl).show(); + } else if (targetTab === 'cables') { + const tabEl = document.getElementById('map-cables-tab'); + if (tabEl) new bootstrap.Tab(tabEl).show(); + if (cableCodeToEdit) { + activateCableEditingMode(cableCodeToEdit); + const item = document.querySelector(`.cable-config-item[data-code="${cableCodeToEdit}"]`); + if (item) { + item.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); + } + } + } + } + document.querySelectorAll('.show-map-btn').forEach(btn => { btn.addEventListener('click', function(e) { e.preventDefault(); - const targetTab = this.dataset.targetTab; - - tableView.classList.remove('d-block'); - tableView.classList.add('d-none'); - - mapView.classList.remove('d-none'); - mapView.classList.add('d-block'); - - // Trigger MapLibre GL canvas resize recalculation - if (map) { - map.resize(); - } - - // Activate corresponding tab in map sidebar - if (targetTab === 'poles') { - const tabEl = document.getElementById('map-poles-tab'); - if (tabEl) new bootstrap.Tab(tabEl).show(); - } else if (targetTab === 'cables') { - const tabEl = document.getElementById('map-cables-tab'); - if (tabEl) new bootstrap.Tab(tabEl).show(); - } + switchToMapView(this.dataset.targetTab); + }); + }); + + document.querySelectorAll('.show-cable-on-map-btn').forEach(btn => { + btn.addEventListener('click', function(e) { + e.preventDefault(); + e.stopPropagation(); + switchToMapView('cables', this.dataset.code); }); }); @@ -1178,7 +1264,11 @@ document.addEventListener('DOMContentLoaded', () => { name: "{{ item.name|escapejs }}", status: "{{ item.status|escapejs }}", geom_modified: {{ item.geom_modified|yesno:"true,false" }}, - connected_poles: {{ item.connected_poles|safe|default:"[]" }} + connected_poles: {{ item.connected_poles|safe|default:"[]" }}, + db_coords: {{ item.db_coords|safe|default:"[]" }}, + has_db_geom: {{ item.has_db_geom|yesno:"true,false" }}, + db_geom_length: {% if item.db_geom_length is not None %}{{ item.db_geom_length|unlocalize }}{% else %}null{% endif %}, + deduced_model_name: "{{ item.deduced_model_name|default:''|escapejs }}" }, {% endfor %} ]; @@ -1213,6 +1303,87 @@ document.addEventListener('DOMContentLoaded', () => { const placedPoles = {}; let layerSwitcher = null; + function calculateLineLengthMeters(coords) { + if (!coords || coords.length < 2) return 0; + const R = 6371000; + let total = 0; + for (let i = 0; i < coords.length - 1; i++) { + const lon1 = coords[i][0] * Math.PI / 180; + const lat1 = coords[i][1] * Math.PI / 180; + const lon2 = coords[i+1][0] * Math.PI / 180; + const lat2 = coords[i+1][1] * Math.PI / 180; + const dLat = lat2 - lat1; + const dLon = lon2 - lon1; + const a = Math.sin(dLat/2) * Math.sin(dLat/2) + + Math.cos(lat1) * Math.cos(lat2) * + Math.sin(dLon/2) * Math.sin(dLon/2); + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); + total += R * c; + } + return Math.round(total * 10) / 10; + } + + function getCableCoords(code) { + if (cableGeometries[code] && cableGeometries[code].length >= 2) { + return cableGeometries[code]; + } + const c = cablesList.find(item => item.code === code); + if (!c) return []; + if (c.db_coords && c.db_coords.length >= 2) { + return c.db_coords; + } + const coords = []; + const connected = c.connected_poles || []; + connected.forEach(pCode => { + if (placedPoles[pCode]) { + coords.push([placedPoles[pCode].lon, placedPoles[pCode].lat]); + } + }); + return coords; + } + + function updateCableBadge(code) { + const badge = document.getElementById(`badge-cable-status-${code}`); + const coords = getCableCoords(code); + const c = cablesList.find(item => item.code === code); + if (!badge || !c) return; + + if (coords && coords.length >= 2) { + const len = calculateLineLengthMeters(coords); + const isModified = cableGeometries[code] !== undefined || c.geom_modified; + if (isModified) { + badge.className = 'badge bg-warning text-dark border border-warning-subtle font-monospace cable-geom-status-badge'; + badge.innerHTML = ` ${coords.length} pts (${len} m)`; + } else { + badge.className = 'badge bg-info-subtle text-info-emphasis border border-info-subtle font-monospace cable-geom-status-badge'; + badge.innerHTML = ` ${coords.length} pts (${len} m)`; + } + } else { + badge.className = 'badge bg-light text-muted border font-monospace cable-geom-status-badge'; + badge.textContent = `{% translate "Non tracé" %}`; + } + } + + function updateTableCableGeomCell(code) { + const geomCell = document.getElementById(`geom_cell_cable_${code}`); + if (!geomCell) return; + const coords = getCableCoords(code); + if (coords && coords.length >= 2) { + const len = calculateLineLengthMeters(coords); + geomCell.innerHTML = ` {% translate "Tracé modifié" %} (${len} m) `; + } else { + geomCell.innerHTML = `{% translate "Non tracé" %} `; + } + const btn = geomCell.querySelector('.show-cable-on-map-btn'); + if (btn) { + btn.addEventListener('click', function(e) { + e.preventDefault(); + e.stopPropagation(); + switchToMapView('cables', code); + }); + } + } + function markCableAsModified(code) { const selectAction = document.querySelector(`select[name="action_cable_${code}"]`); if (selectAction) { @@ -1225,10 +1396,8 @@ document.addEventListener('DOMContentLoaded', () => { const cb = document.querySelector(`input[name="selected_cable_${code}"]`); if (cb) cb.checked = true; - const geomCell = document.getElementById(`geom_cell_cable_${code}`); - if (geomCell) { - geomCell.innerHTML = ` {% translate "Tracé modifié" %}`; - } + updateTableCableGeomCell(code); + updateCableBadge(code); } const snapCandidates = initialDxfPoles.map(dp => [dp.lon, dp.lat, dp.x_3812, dp.y_3812]); @@ -1718,8 +1887,12 @@ document.addEventListener('DOMContentLoaded', () => { deactivateCableEditingMode(); activeEditCable = code; - document.getElementById('map-mode-indicator').textContent = `{% translate "Mode: Tracé" %} ${cablesList.find(c => c.code === code).name}`; + const cableInfo = cablesList.find(c => c.code === code); + const cableName = cableInfo ? cableInfo.name : code; + document.getElementById('map-mode-indicator').textContent = `{% translate "Mode: Tracé" %} ${cableName}`; document.getElementById('btn-clear-trace').style.display = 'block'; + document.getElementById('btn-duplicate-trace').style.display = 'block'; + document.getElementById('cable-edit-tip').style.display = 'block'; const mapPane = document.getElementById('map-cables-pane'); mapPane.querySelectorAll('.cable-config-item').forEach(item => item.classList.remove('bg-light')); @@ -1728,25 +1901,21 @@ document.addEventListener('DOMContentLoaded', () => { let coords = cableGeometries[code]; if (!coords || coords.length === 0) { - const cableInfo = cablesList.find(c => c.code === code); - const connected = cableInfo.connected_poles || []; - - coords = []; - connected.forEach(pCode => { - if (placedPoles[pCode]) { - coords.push([placedPoles[pCode].lon, placedPoles[pCode].lat]); - } - }); + const defaultCoords = getCableCoords(code); + coords = defaultCoords && defaultCoords.length > 0 ? defaultCoords.map(pt => [pt[0], pt[1]]) : []; cableGeometries[code] = coords; } drawCableHandles(code); redrawCablesOnMap(); + updateCableBadge(code); } function deactivateCableEditingMode() { activeEditCable = null; document.getElementById('btn-clear-trace').style.display = 'none'; + document.getElementById('btn-duplicate-trace').style.display = 'none'; + document.getElementById('cable-edit-tip').style.display = 'none'; document.getElementById('map-mode-indicator').textContent = `{% translate "Mode: Lecture" %}`; cableHandles.forEach(h => h.remove()); @@ -1795,6 +1964,7 @@ document.addEventListener('DOMContentLoaded', () => { redrawCablesOnMap(); saveCablesToForm(); markCableAsModified(code); + populateCopyCableMenus(); }); el.addEventListener('dblclick', function(e) { @@ -1804,6 +1974,7 @@ document.addEventListener('DOMContentLoaded', () => { redrawCablesOnMap(); saveCablesToForm(); markCableAsModified(code); + populateCopyCableMenus(); }); }); } @@ -1861,6 +2032,7 @@ document.addEventListener('DOMContentLoaded', () => { redrawCablesOnMap(); saveCablesToForm(); markCableAsModified(activeEditCable); + populateCopyCableMenus(); }); map.on('dblclick', function(e) { @@ -1884,6 +2056,7 @@ document.addEventListener('DOMContentLoaded', () => { redrawCablesOnMap(); saveCablesToForm(); markCableAsModified(activeEditCable); + populateCopyCableMenus(); }); // Hover mouse styles for active cable line @@ -1907,20 +2080,192 @@ document.addEventListener('DOMContentLoaded', () => { redrawCablesOnMap(); saveCablesToForm(); markCableAsModified(activeEditCable); + populateCopyCableMenus(); } }); + function copyCableGeometry(sourceCode, targetCode) { + const srcCoords = getCableCoords(sourceCode); + if (!srcCoords || srcCoords.length < 2) { + alert("{% translate "Le câble source ne possède aucun tracé valide à copier." %}"); + return false; + } + cableGeometries[targetCode] = srcCoords.map(pt => [pt[0], pt[1]]); + saveCablesToForm(); + markCableAsModified(targetCode); + populateCopyCableMenus(); + if (activeEditCable === targetCode) { + drawCableHandles(targetCode); + redrawCablesOnMap(); + } + return true; + } + + function populateCopyCableMenus() { + document.querySelectorAll('.copy-cable-menu').forEach(menu => { + const targetCode = menu.dataset.targetCode; + menu.innerHTML = ''; + + let hasAvailable = false; + cablesList.forEach(other => { + if (other.code === targetCode || other.status === 'db_only') return; + const coords = getCableCoords(other.code); + if (coords && coords.length >= 2) { + hasAvailable = true; + const len = calculateLineLengthMeters(coords); + const li = document.createElement('li'); + li.innerHTML = ` + + `; + menu.appendChild(li); + } + }); + + if (!hasAvailable) { + const li = document.createElement('li'); + li.className = 'dropdown-item text-muted small fst-italic py-2'; + li.textContent = `{% translate "Aucun tracé disponible" %}`; + menu.appendChild(li); + } + }); + + // Rebind click listeners for dynamically populated dropdown items + document.querySelectorAll('.copy-from-cable-btn').forEach(btn => { + btn.onclick = function(e) { + e.preventDefault(); + const source = this.dataset.source; + const target = this.dataset.target; + const success = copyCableGeometry(source, target); + if (success) { + const targetCable = cablesList.find(c => c.code === target); + const sourceCable = cablesList.find(c => c.code === source); + const targetName = targetCable ? targetCable.name : target; + const sourceName = sourceCable ? sourceCable.name : source; + const tipEl = document.getElementById('cable-edit-tip'); + if (tipEl) { + tipEl.style.display = 'block'; + const origContent = tipEl.innerHTML; + tipEl.innerHTML = `{% translate "Tracé copié de" %} ${sourceName} {% translate "vers" %} ${targetName}`; + setTimeout(() => { + if (!activeEditCable) tipEl.style.display = 'none'; + else tipEl.innerHTML = origContent; + }, 3000); + } + } + }; + }); + } + + // Modal Duplicate Trace logic + const duplicateModalEl = document.getElementById('duplicateCableModal'); + const duplicateModal = duplicateModalEl ? new bootstrap.Modal(duplicateModalEl) : null; + + const btnDuplicateTrace = document.getElementById('btn-duplicate-trace'); + if (btnDuplicateTrace) { + btnDuplicateTrace.addEventListener('click', function() { + if (!activeEditCable) return; + const currentCable = cablesList.find(c => c.code === activeEditCable); + const coords = getCableCoords(activeEditCable); + if (!coords || coords.length < 2) { + alert("{% translate "Veuillez d'abord tracer au moins deux points pour ce câble avant de le dupliquer." %}"); + return; + } + + const len = calculateLineLengthMeters(coords); + const srcNameEl = document.getElementById('modal-source-cable-name'); + const srcInfoEl = document.getElementById('modal-source-cable-info'); + if (srcNameEl) srcNameEl.textContent = currentCable ? currentCable.name : activeEditCable; + if (srcInfoEl) srcInfoEl.textContent = `${coords.length} pts • ${len} m`; + + const listContainer = document.getElementById('modal-target-cables-list'); + if (listContainer) { + listContainer.innerHTML = ''; + const otherCables = cablesList.filter(c => c.code !== activeEditCable && c.status !== 'db_only'); + if (otherCables.length === 0) { + listContainer.innerHTML = `
{% translate "Aucun autre câble disponible dans ce carrefour." %}
`; + const confirmBtn = document.getElementById('btn-confirm-duplicate-cable'); + if (confirmBtn) confirmBtn.disabled = true; + } else { + const confirmBtn = document.getElementById('btn-confirm-duplicate-cable'); + if (confirmBtn) confirmBtn.disabled = false; + otherCables.forEach(c => { + const cCoords = getCableCoords(c.code); + const hasGeom = cCoords && cCoords.length >= 2; + const cLen = hasGeom ? calculateLineLengthMeters(cCoords) : null; + const geomBadge = hasGeom + ? `${cCoords.length} pts (${cLen} m)` + : `{% translate "Non tracé" %}`; + + const itemDiv = document.createElement('div'); + itemDiv.className = 'form-check d-flex align-items-center p-2 rounded border bg-white'; + itemDiv.innerHTML = ` + + + `; + listContainer.appendChild(itemDiv); + }); + } + } + + const selectAllCb = document.getElementById('modal-select-all-cables'); + if (selectAllCb) selectAllCb.checked = false; + + if (duplicateModal) duplicateModal.show(); + }); + } + + const modalSelectAllCables = document.getElementById('modal-select-all-cables'); + if (modalSelectAllCables) { + modalSelectAllCables.addEventListener('change', function() { + const checked = this.checked; + document.querySelectorAll('.modal-cable-target-cb').forEach(cb => { + cb.checked = checked; + }); + }); + } + + const btnConfirmDuplicateCable = document.getElementById('btn-confirm-duplicate-cable'); + if (btnConfirmDuplicateCable) { + btnConfirmDuplicateCable.addEventListener('click', function() { + if (!activeEditCable) return; + const selectedCbs = document.querySelectorAll('.modal-cable-target-cb:checked'); + if (selectedCbs.length === 0) { + alert("{% translate "Veuillez sélectionner au moins un câble cible." %}"); + return; + } + + let appliedCount = 0; + selectedCbs.forEach(cb => { + const targetCode = cb.value; + copyCableGeometry(activeEditCable, targetCode); + appliedCount++; + }); + + if (duplicateModal) duplicateModal.hide(); + + const tipEl = document.getElementById('cable-edit-tip'); + if (tipEl) { + const origContent = tipEl.innerHTML; + tipEl.innerHTML = `${appliedCount} {% translate "câble(s) mis à jour avec ce tracé !" %}`; + setTimeout(() => { + if (activeEditCable) tipEl.innerHTML = origContent; + }, 3000); + } + }); + } + function saveCablesToForm() { cablesList.forEach(c => { let coords = cableGeometries[c.code]; if (!coords || coords.length === 0) { - coords = []; - const connected = c.connected_poles || []; - connected.forEach(pCode => { - if (placedPoles[pCode]) { - coords.push([placedPoles[pCode].lon, placedPoles[pCode].lat]); - } - }); + coords = getCableCoords(c.code); } const input = document.getElementById(`geom_cable_${c.code}`); if (input && coords && coords.length >= 2) { @@ -1953,13 +2298,7 @@ document.addEventListener('DOMContentLoaded', () => { let coords = cableGeometries[c.code]; if (!coords || coords.length === 0) { - coords = []; - const connected = c.connected_poles || []; - connected.forEach(pCode => { - if (placedPoles[pCode]) { - coords.push([placedPoles[pCode].lon, placedPoles[pCode].lat]); - } - }); + coords = getCableCoords(c.code); } if (coords && coords.length >= 2) { @@ -1987,6 +2326,12 @@ document.addEventListener('DOMContentLoaded', () => { map.triggerRepaint(); } + // Initial cable badges and copy menus update + cablesList.forEach(c => { + updateCableBadge(c.code); + }); + populateCopyCableMenus(); + // ── Georeferenced Plans & DXF Background Loader ── const georeferencedDocumentsDataEl = document.getElementById('georeferencedDocumentsData'); let georeferencedDocuments = []; diff --git a/loko/assets/tests.py b/loko/assets/tests.py index d22c291..7016db8 100644 --- a/loko/assets/tests.py +++ b/loko/assets/tests.py @@ -3325,6 +3325,88 @@ class TrafficLightCrossPlanImportTest(TestCase): if os.path.exists(tmp_path): os.remove(tmp_path) + def test_compared_cables_db_coords_and_integrate_cable_geometry(self): + import openpyxl + import tempfile + import json + from django.contrib.gis.geos import LineString + from assets.models import TrafficLightCable, TrafficLightCableModel + from django.core.files.uploadedfile import SimpleUploadedFile + from pyproj import Transformer + + cable_model = TrafficLightCableModel.objects.first() + transformer = Transformer.from_crs(4326, 3812, always_xy=True) + p1 = transformer.transform(4.3508, 50.8465) + p2 = transformer.transform(4.3518, 50.8475) + + # Create active cable in DB with Lambert 3812 LineString + existing_cable = TrafficLightCable.objects.create( + intersection=self.intersection, + code="SWB01_CAB01", + model=cable_model, + status="active", + geom=LineString([p1, p2], srid=3812) + ) + + wb = openpyxl.Workbook() + ws = wb.active + ws.title = "kruisjesplan" + ws.cell(row=1, column=1, value="Sleutel:") + ws.cell(row=1, column=2, value="SWB01") + ws.cell(row=5, column=1, value="Câble 01 SVAVB 61x1,5mm²") + ws.cell(row=6, column=3, value="richting") + ws.cell(row=6, column=4, value="kringen") + ws.cell(row=7, column=5, value="A01") + ws.cell(row=7, column=6, value="B01") + ws.cell(row=8, column=1, value="1") + ws.cell(row=8, column=5, value="X") + ws.cell(row=8, column=6, value="X") + + with tempfile.NamedTemporaryFile(suffix=".xlsx", delete=False) as tmp: + tmp_path = tmp.name + wb.save(tmp_path) + + try: + self.client.force_login(self.user) + with open(tmp_path, "rb") as f: + uploaded_file = SimpleUploadedFile("test_cross_plan.xlsx", f.read(), content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") + + url_import = reverse("assets:import_cross_plan", args=[self.intersection.id]) + response = self.client.post(url_import, {"cross_plan_file_upload": uploaded_file}) + self.assertEqual(response.status_code, 200) + + cables_preview = response.context["cables"] + cab01 = next((c for c in cables_preview if c["code"] == "SWB01_CAB01"), None) + self.assertIsNotNone(cab01) + self.assertTrue(cab01["has_db_geom"]) + self.assertIsNotNone(cab01["db_coords"]) + self.assertEqual(len(cab01["db_coords"]), 2) + # Coordinates in WGS84 lon, lat + self.assertAlmostEqual(cab01["db_coords"][0][0], 4.35, delta=0.5) + + # Test integrate with modified cable geometry + url_integrate = reverse("assets:integrate_cross_plan", args=[self.intersection.id]) + new_geom_coords = [[4.3508, 50.8465], [4.3510, 50.8470], [4.3515, 50.8475]] + post_data = { + "cross_plan_filename": response.context["cross_plan_filename"], + "selected_cable_SWB01_CAB01": "on", + "action_cable_SWB01_CAB01": "modify", + "db_id_cable_SWB01_CAB01": str(existing_cable.id), + "geom_cable_SWB01_CAB01": json.dumps(new_geom_coords), + } + res_int = self.client.post(url_integrate, post_data) + self.assertEqual(res_int.status_code, 302) + + existing_cable.refresh_from_db() + self.assertIsNotNone(existing_cable.geom) + self.assertEqual(len(existing_cable.geom.coords), 3) + self.assertEqual(existing_cable.geom.srid, 3812) + + finally: + import os + if os.path.exists(tmp_path): + os.remove(tmp_path) + diff --git a/loko/assets/views/trafficlights.py b/loko/assets/views/trafficlights.py index 3cb0a5c..656fc68 100644 --- a/loko/assets/views/trafficlights.py +++ b/loko/assets/views/trafficlights.py @@ -4401,6 +4401,15 @@ def import_cross_plan(request, intersection_id): geom_modified = True details_diff.append(_("Nouveau tracé déduit des poteaux")) + db_coords = [] + if has_geom: + try: + gw = ec.geom.clone() + gw.transform(4326) + db_coords = [[round(c[0], 6), round(c[1], 6)] for c in gw.coords] + except Exception: + db_coords = [] + status = 'modified' if (is_diff or geom_modified) else 'identical' compared_cables.append({ 'code': code, @@ -4414,6 +4423,7 @@ def import_cross_plan(request, intersection_id): 'has_db_geom': has_geom, 'geom_modified': geom_modified, 'db_geom_length': round(ec.geom.length, 1) if has_geom else None, + 'db_coords': db_coords, }) existing_cables.pop(code) else: @@ -4432,9 +4442,18 @@ def import_cross_plan(request, intersection_id): 'has_db_geom': False, 'geom_modified': False, 'db_geom_length': None, + 'db_coords': [], }) for code, ec in existing_cables.items(): has_geom = ec.geom is not None + db_coords = [] + if has_geom: + try: + gw = ec.geom.clone() + gw.transform(4326) + db_coords = [[round(c[0], 6), round(c[1], 6)] for c in gw.coords] + except Exception: + db_coords = [] compared_cables.append({ 'code': code, 'name': ec.name_fr or code, @@ -4446,6 +4465,7 @@ def import_cross_plan(request, intersection_id): 'has_db_geom': has_geom, 'geom_modified': False, 'db_geom_length': round(ec.geom.length, 1) if has_geom else None, + 'db_coords': db_coords, }) # ── 3. LANTERNS COMPARISON ──