Files
Plugin_SN_Verfahrensgebiet/ui/eigentuemer_korrektur_dialog.py
T
DanielandClaude Opus 5.5 e547cb90c5 Anzeige für den Eigentümer und Korrekturen im Tab „Eigentümer“ (#56)
„Daten anzeigen“ in der Trefferliste zeigt Name, Anschrift und E-Mail der
gewählten Einträge in einem eigenen Fenster: auf einem zweiten Bildschirm
im Vollbild, auf dem QGIS-Bildschirm als normales Fenster. Die Sitzung
wird von Hand begonnen und beendet; „Anzeige leeren“ entfernt die Daten,
ohne das Fenster zu schließen. Konten, IDs und Kennzeichen erscheinen dort
nicht, alle Werte werden maskiert.

„Korrigieren …“ ändert angezeigte Daten. Die Eigentümerdatei bleibt
unverändert; jede Änderung wird mit Zeitpunkt, Konto, Personen-ID, altem
und neuem Wert an <Eigentümerdatei>_korrekturen.csv angehängt und sofort
angezeigt. Ohne beschreibbaren Ordner wird nach dem Speicherort gefragt.

In test_eigentuemer_tab.py sind die beim letzten Mal zusammengezogenen
with-Zeilen wieder umbrochen; die Trefferliste bekommt jetzt den
Anzeige-Rückruf, der Test dazu ist angepasst.

Dritter und letzter Schritt von #56.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 13:27:15 +02:00

80 lines
2.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""sn_verfahrensgebiet/ui/eigentuemer_korrektur_dialog.py – Korrekturdialog für den Bearbeiter (#56).
Zeigt die Felder eines angezeigten Eintrags zum Bearbeiten. Sind mehrere
Einträge angezeigt, wählt der Bearbeiter oben, welchen er korrigiert. Der
Dialog speichert nichts selbst; das übernimmt der Tab über
:mod:`sn_verfahrensgebiet.functions.eigentuemer_korrektur`.
"""
from typing import Dict, Optional, Sequence, Tuple
from sn_basis.functions.qt_wrapper import (
QT_VERSION, exec_dialog, DialogAccepted,
QDialog, QDialogButtonBox, QVBoxLayout, QGridLayout, QLabel, QLineEdit, QComboBox,
)
from sn_verfahrensgebiet.functions.eigentuemer_suche import Eigentuemer
from sn_verfahrensgebiet.functions.eigentuemer_korrektur import FELDER, feldwerte
def frage_korrektur(
parent,
eintraege: Sequence[Eigentuemer],
) -> Optional[Tuple[int, Dict[str, str]]]:
"""Fragt die korrigierten Werte ab.
Returns
-------
Optional[Tuple[int, Dict[str, str]]]
Index des gewählten Eintrags und die Werte aller Felder, oder ``None``
bei Abbruch (und im Mock-Modus).
"""
if not eintraege or QT_VERSION == 0:
return None
dialog = QDialog(parent)
dialog.setWindowTitle("Daten korrigieren")
layout = QVBoxLayout(dialog)
auswahl = QComboBox()
for eintrag in eintraege:
auswahl.addItem(f"{eintrag.name} – {eintrag.anschrift}")
if len(eintraege) > 1:
layout.addWidget(QLabel("Eintrag:"))
layout.addWidget(auswahl)
raster = QGridLayout()
felder: Dict[str, QLineEdit] = {}
for zeile, (schluessel, beschriftung) in enumerate(FELDER):
raster.addWidget(QLabel(f"{beschriftung}:"), zeile, 0)
feld = QLineEdit()
raster.addWidget(feld, zeile, 1)
felder[schluessel] = feld
layout.addLayout(raster)
def _fuellen(index: int) -> None:
if 0 <= index < len(eintraege):
for schluessel, wert in feldwerte(eintraege[index]).items():
felder[schluessel].setText(wert)
auswahl.currentIndexChanged.connect(_fuellen)
_fuellen(0)
hinweis = QLabel(
"<small>Die Eigentümerdatei bleibt unverändert. Jede Änderung wird in der "
"Korrektur-CSV festgehalten und sofort im Anzeigefenster gezeigt. "
"Mehrere E-Mail-Adressen mit Komma trennen.</small>"
)
hinweis.setWordWrap(True)
layout.addWidget(hinweis)
knoepfe = QDialogButtonBox(QDialogButtonBox.StandardButton.Save | QDialogButtonBox.StandardButton.Cancel)
knoepfe.accepted.connect(dialog.accept)
knoepfe.rejected.connect(dialog.reject)
layout.addWidget(knoepfe)
dialog.resize(520, dialog.sizeHint().height())
if exec_dialog(dialog) != DialogAccepted:
return None
return auswahl.currentIndex(), {schluessel: feld.text() for schluessel, feld in felder.items()}