try1-fix: direkte Prüfung ohne ALKIS-Pipeline
This commit is contained in:
@@ -221,15 +221,26 @@ def baue_flurstueck_csv_liste(zeilen: List[dict], laenderkennung: str) -> List[s
|
|||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
def _hole_verfahrensgebiet_layer(tab_widget) -> Optional[object]:
|
def _hole_verfahrensgebiet_layer(tab_widget) -> Optional[object]:
|
||||||
"""Liefert den aktuell relevanten Verfahrensgebiet-Layer, falls vorhanden."""
|
"""Liefert den Verfahrensgebiet-Layer, falls vorhanden.
|
||||||
|
|
||||||
|
Der per Name (``VERF_LAYER_NAME``) identifizierte Layer hat Vorrang vor
|
||||||
|
der Dropdown-Auswahl im Tab: try1/try2/try3 orientieren sich am
|
||||||
|
tatsächlichen "Verfahrensgebiet"-Bestand im Projekt, nicht an einer
|
||||||
|
ggf. anderweitig belegten Nutzerauswahl (z.B. für Grenzpunkte/
|
||||||
|
Umringstatistik). Die Dropdown-Auswahl dient nur als Fallback, falls
|
||||||
|
kein so benannter Layer existiert.
|
||||||
|
"""
|
||||||
|
treffer = QgsProject.instance().mapLayersByName(VERF_LAYER_NAME)
|
||||||
|
if treffer:
|
||||||
|
return treffer[0]
|
||||||
|
|
||||||
combo = getattr(tab_widget, "verf_layer_combo", None)
|
combo = getattr(tab_widget, "verf_layer_combo", None)
|
||||||
if combo is not None:
|
if combo is not None:
|
||||||
layer = combo.currentLayer()
|
layer = combo.currentLayer()
|
||||||
if layer is not None and layer.isValid():
|
if layer is not None and layer.isValid():
|
||||||
return layer
|
return layer
|
||||||
|
|
||||||
treffer = QgsProject.instance().mapLayersByName(VERF_LAYER_NAME)
|
return None
|
||||||
return treffer[0] if treffer else None
|
|
||||||
|
|
||||||
|
|
||||||
def _hat_verwendbare_kennzeichen(verf_layer) -> bool:
|
def _hat_verwendbare_kennzeichen(verf_layer) -> bool:
|
||||||
@@ -272,6 +283,10 @@ def _try1_listenabgleich(
|
|||||||
3, "Beteiligung prüfen", "Verfahrensgebiet-Kennzeichen einlesen …"
|
3, "Beteiligung prüfen", "Verfahrensgebiet-Kennzeichen einlesen …"
|
||||||
)
|
)
|
||||||
progress.set_value(0)
|
progress.set_value(0)
|
||||||
|
# Ohne eine dazwischenliegende Nutzerinteraktion (z.B. nach der silent
|
||||||
|
# durchlaufenen ALKIS-Pipeline in try2/try3) holt sich kein anderer
|
||||||
|
# Dialog den Fokus zurück – Dialog daher explizit in den Vordergrund holen.
|
||||||
|
progress.raise_to_front()
|
||||||
|
|
||||||
verf_menge = get_kennzeichen_menge(verf_layer)
|
verf_menge = get_kennzeichen_menge(verf_layer)
|
||||||
csv_menge = set(flurstueck_csv_liste)
|
csv_menge = set(flurstueck_csv_liste)
|
||||||
|
|||||||
@@ -496,6 +496,10 @@ def verfahrensgebiet_alkis_komplett(
|
|||||||
"Schritt 1: Grenzpunkte laden …",
|
"Schritt 1: Grenzpunkte laden …",
|
||||||
)
|
)
|
||||||
detail_progress.set_value(0)
|
detail_progress.set_value(0)
|
||||||
|
# Ohne die (im silent-Modus übersprungene) Nachfrage vor diesem Punkt
|
||||||
|
# holt sich kein anderer Dialog mehr den Fokus zurück – Dialog daher
|
||||||
|
# explizit in den Vordergrund holen, sonst bleibt er unsichtbar.
|
||||||
|
detail_progress.raise_to_front()
|
||||||
|
|
||||||
# Schritt 1: PunktortTA gemarkungsweise laden (Hits + 5000er-Batches)
|
# Schritt 1: PunktortTA gemarkungsweise laden (Hits + 5000er-Batches)
|
||||||
punktort_layer = lade_punktort_ta(
|
punktort_layer = lade_punktort_ta(
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ from sn_verfahrensgebiet.functions.beteiligung_pruefung import (
|
|||||||
CSV_SPALTE_VEF_VKZF,
|
CSV_SPALTE_VEF_VKZF,
|
||||||
_lade_via_alkis_pipeline_und_vergleiche,
|
_lade_via_alkis_pipeline_und_vergleiche,
|
||||||
_try3_bootstrap_und_try2,
|
_try3_bootstrap_und_try2,
|
||||||
|
_hole_verfahrensgebiet_layer,
|
||||||
)
|
)
|
||||||
|
|
||||||
_MOD = "sn_verfahrensgebiet.functions.beteiligung_pruefung"
|
_MOD = "sn_verfahrensgebiet.functions.beteiligung_pruefung"
|
||||||
@@ -125,6 +126,50 @@ class TestBaueFlurstueckCsvListe(unittest.TestCase):
|
|||||||
self.assertEqual(zeilen[2][FELD_FLURSTUECK_CSV], "145678___00001____01")
|
self.assertEqual(zeilen[2][FELD_FLURSTUECK_CSV], "145678___00001____01")
|
||||||
|
|
||||||
|
|
||||||
|
class TestHoleVerfahrensgebietLayer(unittest.TestCase):
|
||||||
|
@patch(f"{_MOD}.QgsProject")
|
||||||
|
def test_layer_per_name_hat_vorrang_vor_combo_auswahl(self, mock_project_cls):
|
||||||
|
namens_layer = MagicMock(name="verfahrensgebiet_layer")
|
||||||
|
mock_project = MagicMock()
|
||||||
|
mock_project.mapLayersByName.return_value = [namens_layer]
|
||||||
|
mock_project_cls.instance.return_value = mock_project
|
||||||
|
|
||||||
|
andere_auswahl = MagicMock(name="andere_layer_in_combo")
|
||||||
|
andere_auswahl.isValid.return_value = True
|
||||||
|
tab_widget = MagicMock()
|
||||||
|
tab_widget.verf_layer_combo.currentLayer.return_value = andere_auswahl
|
||||||
|
|
||||||
|
ergebnis = _hole_verfahrensgebiet_layer(tab_widget)
|
||||||
|
|
||||||
|
self.assertIs(ergebnis, namens_layer)
|
||||||
|
|
||||||
|
@patch(f"{_MOD}.QgsProject")
|
||||||
|
def test_combo_auswahl_als_fallback_ohne_namens_layer(self, mock_project_cls):
|
||||||
|
mock_project = MagicMock()
|
||||||
|
mock_project.mapLayersByName.return_value = []
|
||||||
|
mock_project_cls.instance.return_value = mock_project
|
||||||
|
|
||||||
|
combo_layer = MagicMock(name="combo_layer")
|
||||||
|
combo_layer.isValid.return_value = True
|
||||||
|
tab_widget = MagicMock()
|
||||||
|
tab_widget.verf_layer_combo.currentLayer.return_value = combo_layer
|
||||||
|
|
||||||
|
ergebnis = _hole_verfahrensgebiet_layer(tab_widget)
|
||||||
|
|
||||||
|
self.assertIs(ergebnis, combo_layer)
|
||||||
|
|
||||||
|
@patch(f"{_MOD}.QgsProject")
|
||||||
|
def test_kein_layer_gibt_none(self, mock_project_cls):
|
||||||
|
mock_project = MagicMock()
|
||||||
|
mock_project.mapLayersByName.return_value = []
|
||||||
|
mock_project_cls.instance.return_value = mock_project
|
||||||
|
|
||||||
|
tab_widget = MagicMock()
|
||||||
|
tab_widget.verf_layer_combo.currentLayer.return_value = None
|
||||||
|
|
||||||
|
self.assertIsNone(_hole_verfahrensgebiet_layer(tab_widget))
|
||||||
|
|
||||||
|
|
||||||
class TestLadeViaAlkisPipelineUndVergleiche(unittest.TestCase):
|
class TestLadeViaAlkisPipelineUndVergleiche(unittest.TestCase):
|
||||||
@patch(f"{_MOD}._try1_listenabgleich")
|
@patch(f"{_MOD}._try1_listenabgleich")
|
||||||
@patch(f"{_MOD}.apply_style")
|
@patch(f"{_MOD}.apply_style")
|
||||||
|
|||||||
Reference in New Issue
Block a user