2026-10-06 13:04:16 +02:00
|
|
|
|
"""sn_verfahrensgebiet/ui/eigentuemer_treffer.py – Trefferliste der Eigentümersuche (#56).
|
|
|
|
|
|
|
|
|
|
|
|
Nicht modales Fenster für den Bearbeiter. Es zeigt die zusammengefassten
|
2026-10-06 13:13:50 +02:00
|
|
|
|
Treffer mit dem Wert von ``PER_RECHTSPERSON`` (noch nicht entschlüsselt) und dem
|
2026-10-06 13:27:15 +02:00
|
|
|
|
Kennzeichen „verstorben“ und erlaubt die Mehrfachauswahl. „Daten anzeigen“
|
|
|
|
|
|
übergibt die Auswahl an das Anzeigefenster für den Eigentümer. Die Tabelle kommt aus
|
2026-10-06 13:04:16 +02:00
|
|
|
|
:func:`~sn_verfahrensgebiet.functions.verfahrensgebiet_dialoge.baue_auswahltabelle`,
|
|
|
|
|
|
dieselbe wie bei „Verfahrensgebiete aus Landkreis laden“.
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
2026-10-06 13:27:15 +02:00
|
|
|
|
from typing import Callable, List, Optional, Sequence, Tuple
|
2026-10-06 13:04:16 +02:00
|
|
|
|
|
|
|
|
|
|
from sn_basis.functions.qt_wrapper import QDialog, QVBoxLayout, QHBoxLayout, QLabel, QPushButton
|
|
|
|
|
|
|
|
|
|
|
|
from sn_verfahrensgebiet.functions.eigentuemer_suche import Eigentuemer
|
|
|
|
|
|
from sn_verfahrensgebiet.functions.verfahrensgebiet_dialoge import (
|
|
|
|
|
|
baue_auswahltabelle,
|
|
|
|
|
|
ausgewaehlte_indizes,
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2026-10-06 13:13:50 +02:00
|
|
|
|
SPALTENKOEPFE = ["Name", "Anschrift", "E-Mail", "Rechtsperson", "Hinweis"]
|
2026-10-06 13:04:16 +02:00
|
|
|
|
|
|
|
|
|
|
|
2026-10-06 13:13:50 +02:00
|
|
|
|
def trefferzeile(eigentuemer: Eigentuemer) -> Tuple[str, str, str, str, str]:
|
2026-10-06 13:04:16 +02:00
|
|
|
|
"""Spaltentexte eines Treffers in der Reihenfolge von :data:`SPALTENKOEPFE`."""
|
|
|
|
|
|
return (
|
|
|
|
|
|
eigentuemer.name,
|
|
|
|
|
|
eigentuemer.anschrift,
|
|
|
|
|
|
", ".join(eigentuemer.emails),
|
2026-10-06 13:13:50 +02:00
|
|
|
|
eigentuemer.rechtsperson_text,
|
2026-10-06 13:04:16 +02:00
|
|
|
|
eigentuemer.hinweise,
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EigentuemerTrefferFenster(QDialog):
|
|
|
|
|
|
"""Trefferliste der Eigentümersuche; bleibt offen, während weitergesucht wird."""
|
|
|
|
|
|
|
2026-10-06 13:27:15 +02:00
|
|
|
|
def __init__(
|
|
|
|
|
|
self,
|
|
|
|
|
|
treffer: Sequence[Eigentuemer],
|
|
|
|
|
|
parent=None,
|
|
|
|
|
|
beim_anzeigen: Optional[Callable[[List[Eigentuemer]], None]] = None,
|
|
|
|
|
|
):
|
2026-10-06 13:04:16 +02:00
|
|
|
|
super().__init__(parent)
|
|
|
|
|
|
self.treffer: List[Eigentuemer] = list(treffer)
|
2026-10-06 13:27:15 +02:00
|
|
|
|
self.beim_anzeigen = beim_anzeigen
|
2026-10-06 13:04:16 +02:00
|
|
|
|
self.setWindowTitle("Eigentümersuche – Treffer")
|
|
|
|
|
|
self.setModal(False)
|
|
|
|
|
|
|
|
|
|
|
|
layout = QVBoxLayout(self)
|
|
|
|
|
|
anzahl = len(self.treffer)
|
|
|
|
|
|
layout.addWidget(QLabel("1 Eintrag gefunden." if anzahl == 1 else f"{anzahl} Einträge gefunden."))
|
|
|
|
|
|
|
|
|
|
|
|
self.tabelle = baue_auswahltabelle(
|
|
|
|
|
|
layout,
|
|
|
|
|
|
SPALTENKOEPFE,
|
|
|
|
|
|
[trefferzeile(e) for e in self.treffer],
|
|
|
|
|
|
platzhalter="Name, Ort oder Hinweis …",
|
|
|
|
|
|
)
|
|
|
|
|
|
self.tabelle.resizeColumnsToContents()
|
|
|
|
|
|
if anzahl == 1:
|
|
|
|
|
|
self.tabelle.selectRow(0)
|
|
|
|
|
|
|
|
|
|
|
|
knoepfe = QHBoxLayout()
|
2026-10-06 13:27:15 +02:00
|
|
|
|
self.btn_anzeigen = QPushButton("Daten anzeigen")
|
|
|
|
|
|
self.btn_anzeigen.setToolTip("Zeigt die ausgewählten Einträge im Fenster für den Eigentümer.")
|
|
|
|
|
|
self.btn_anzeigen.clicked.connect(self._on_anzeigen)
|
|
|
|
|
|
knoepfe.addWidget(self.btn_anzeigen)
|
2026-10-06 13:04:16 +02:00
|
|
|
|
knoepfe.addStretch()
|
|
|
|
|
|
self.btn_schliessen = QPushButton("Schließen")
|
|
|
|
|
|
self.btn_schliessen.clicked.connect(self.close)
|
|
|
|
|
|
knoepfe.addWidget(self.btn_schliessen)
|
|
|
|
|
|
layout.addLayout(knoepfe)
|
|
|
|
|
|
|
|
|
|
|
|
self.resize(760, 420)
|
|
|
|
|
|
|
|
|
|
|
|
def ausgewaehlte_eigentuemer(self) -> List[Eigentuemer]:
|
|
|
|
|
|
"""Die in der Tabelle ausgewählten Treffer, in der Reihenfolge der Trefferliste."""
|
|
|
|
|
|
return [self.treffer[i] for i in ausgewaehlte_indizes(self.tabelle)]
|
2026-10-06 13:27:15 +02:00
|
|
|
|
|
|
|
|
|
|
def _on_anzeigen(self) -> None:
|
|
|
|
|
|
if self.beim_anzeigen is not None:
|
|
|
|
|
|
self.beim_anzeigen(self.ausgewaehlte_eigentuemer())
|