2025-12-18 22:00:31 +01:00
|
|
|
|
"""
|
2025-12-19 14:29:52 +01:00
|
|
|
|
sn_basis/modules/Pruefmanager.py – zentrale Verarbeitung von pruef_ergebnis-Objekten.
|
|
|
|
|
|
Steuert die Nutzerinteraktion über Wrapper.
|
2025-12-18 22:00:31 +01:00
|
|
|
|
"""
|
|
|
|
|
|
|
2025-12-19 14:29:52 +01:00
|
|
|
|
from sn_basis.functions import (
|
2025-12-18 22:00:31 +01:00
|
|
|
|
ask_yes_no,
|
|
|
|
|
|
info,
|
|
|
|
|
|
warning,
|
|
|
|
|
|
error,
|
2025-12-19 14:29:52 +01:00
|
|
|
|
set_layer_visible,
|
2025-12-18 22:00:31 +01:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
from sn_basis.modules.pruef_ergebnis import pruef_ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Pruefmanager:
|
|
|
|
|
|
"""
|
|
|
|
|
|
Verarbeitet pruef_ergebnis-Objekte und steuert die Nutzerinteraktion.
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, ui_modus: str = "qgis"):
|
|
|
|
|
|
self.ui_modus = ui_modus
|
|
|
|
|
|
|
|
|
|
|
|
# ---------------------------------------------------------
|
|
|
|
|
|
# Hauptfunktion
|
|
|
|
|
|
# ---------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
def verarbeite(self, ergebnis: pruef_ergebnis) -> pruef_ergebnis:
|
|
|
|
|
|
"""
|
|
|
|
|
|
Verarbeitet ein pruef_ergebnis und führt ggf. Nutzerinteraktion durch.
|
|
|
|
|
|
Rückgabe: neues oder unverändertes pruef_ergebnis.
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
if ergebnis.ok:
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
aktion = ergebnis.aktion
|
2025-12-19 14:29:52 +01:00
|
|
|
|
kontext = ergebnis.kontext
|
2025-12-18 22:00:31 +01:00
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------
|
|
|
|
|
|
# Allgemeine Aktionen
|
|
|
|
|
|
# -----------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "leer":
|
|
|
|
|
|
warning("Eingabe fehlt", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "leereingabe_erlaubt":
|
|
|
|
|
|
if ask_yes_no("Ohne Eingabe fortfahren", ergebnis.meldung):
|
2025-12-19 14:29:52 +01:00
|
|
|
|
return pruef_ergebnis(
|
|
|
|
|
|
ok=True,
|
|
|
|
|
|
meldung="Ohne Eingabe fortgefahren.",
|
|
|
|
|
|
aktion="ok",
|
|
|
|
|
|
kontext=None,
|
|
|
|
|
|
)
|
2025-12-18 22:00:31 +01:00
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "leereingabe_nicht_erlaubt":
|
|
|
|
|
|
warning("Eingabe erforderlich", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "standarddatei_vorschlagen":
|
|
|
|
|
|
if ask_yes_no("Standarddatei verwenden", ergebnis.meldung):
|
2025-12-19 14:29:52 +01:00
|
|
|
|
return pruef_ergebnis(
|
|
|
|
|
|
ok=True,
|
|
|
|
|
|
meldung="Standarddatei wird verwendet.",
|
|
|
|
|
|
aktion="ok",
|
|
|
|
|
|
kontext=kontext,
|
|
|
|
|
|
)
|
2025-12-18 22:00:31 +01:00
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "temporaer_erlaubt":
|
|
|
|
|
|
if ask_yes_no("Temporäre Datei erzeugen", ergebnis.meldung):
|
2025-12-19 14:29:52 +01:00
|
|
|
|
return pruef_ergebnis(
|
|
|
|
|
|
ok=True,
|
|
|
|
|
|
meldung="Temporäre Datei soll erzeugt werden.",
|
|
|
|
|
|
aktion="temporaer_erzeugen",
|
|
|
|
|
|
kontext=None,
|
|
|
|
|
|
)
|
2025-12-18 22:00:31 +01:00
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "datei_nicht_gefunden":
|
|
|
|
|
|
warning("Datei nicht gefunden", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "kein_dateipfad":
|
|
|
|
|
|
warning("Ungültiger Pfad", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "pfad_nicht_gefunden":
|
|
|
|
|
|
warning("Pfad nicht gefunden", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "url_nicht_erreichbar":
|
|
|
|
|
|
warning("URL nicht erreichbar", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "netzwerkfehler":
|
|
|
|
|
|
error("Netzwerkfehler", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------
|
|
|
|
|
|
# Layer-Aktionen
|
|
|
|
|
|
# -----------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "layer_nicht_gefunden":
|
|
|
|
|
|
error("Layer fehlt", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "layer_unsichtbar":
|
|
|
|
|
|
if ask_yes_no("Layer einblenden", ergebnis.meldung):
|
2025-12-19 14:29:52 +01:00
|
|
|
|
if kontext is not None:
|
|
|
|
|
|
try:
|
|
|
|
|
|
set_layer_visible(kontext, True)
|
|
|
|
|
|
except Exception:
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
return pruef_ergebnis(
|
|
|
|
|
|
ok=True,
|
|
|
|
|
|
meldung="Layer wurde eingeblendet.",
|
|
|
|
|
|
aktion="ok",
|
|
|
|
|
|
kontext=kontext,
|
|
|
|
|
|
)
|
2025-12-18 22:00:31 +01:00
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "falscher_geotyp":
|
|
|
|
|
|
warning("Falscher Geometrietyp", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "layer_leer":
|
|
|
|
|
|
warning("Layer enthält keine Objekte", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "falscher_layertyp":
|
|
|
|
|
|
warning("Falscher Layertyp", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "falsches_crs":
|
|
|
|
|
|
warning("Falsches CRS", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "felder_fehlen":
|
|
|
|
|
|
warning("Fehlende Felder", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "datenquelle_unerwartet":
|
|
|
|
|
|
warning("Unerwartete Datenquelle", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
if aktion == "layer_nicht_editierbar":
|
|
|
|
|
|
warning("Layer nicht editierbar", ergebnis.meldung)
|
|
|
|
|
|
return ergebnis
|
|
|
|
|
|
|
|
|
|
|
|
# -----------------------------------------------------
|
|
|
|
|
|
# Fallback
|
|
|
|
|
|
# -----------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
warning("Unbekannte Aktion", f"Unbekannte Aktion: {aktion}")
|
|
|
|
|
|
return ergebnis
|