PER_RECHTSPERSON kennt die Werte 0, 1, 5 und 9 und ist kein Ja/Nein-Feld. Die Trefferliste bekommt dafür eine eigene Spalte mit dem unveränderten Wert; abweichende Werte einer Person werden gesammelt. Die Entschlüsselung folgt später. „verstorben“ (PER_VERSTORBEN 0/1) bleibt als Hinweis. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
69 lines
2.6 KiB
Python
69 lines
2.6 KiB
Python
"""sn_verfahrensgebiet/ui/eigentuemer_treffer.py – Trefferliste der Eigentümersuche (#56).
|
||
|
||
Nicht modales Fenster für den Bearbeiter. Es zeigt die zusammengefassten
|
||
Treffer mit dem Wert von ``PER_RECHTSPERSON`` (noch nicht entschlüsselt) und dem
|
||
Kennzeichen „verstorben“ und erlaubt die Mehrfachauswahl. Die Tabelle kommt aus
|
||
:func:`~sn_verfahrensgebiet.functions.verfahrensgebiet_dialoge.baue_auswahltabelle`,
|
||
dieselbe wie bei „Verfahrensgebiete aus Landkreis laden“.
|
||
"""
|
||
|
||
from typing import List, Sequence, Tuple
|
||
|
||
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,
|
||
)
|
||
|
||
SPALTENKOEPFE = ["Name", "Anschrift", "E-Mail", "Rechtsperson", "Hinweis"]
|
||
|
||
|
||
def trefferzeile(eigentuemer: Eigentuemer) -> Tuple[str, str, str, str, str]:
|
||
"""Spaltentexte eines Treffers in der Reihenfolge von :data:`SPALTENKOEPFE`."""
|
||
return (
|
||
eigentuemer.name,
|
||
eigentuemer.anschrift,
|
||
", ".join(eigentuemer.emails),
|
||
eigentuemer.rechtsperson_text,
|
||
eigentuemer.hinweise,
|
||
)
|
||
|
||
|
||
class EigentuemerTrefferFenster(QDialog):
|
||
"""Trefferliste der Eigentümersuche; bleibt offen, während weitergesucht wird."""
|
||
|
||
def __init__(self, treffer: Sequence[Eigentuemer], parent=None):
|
||
super().__init__(parent)
|
||
self.treffer: List[Eigentuemer] = list(treffer)
|
||
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()
|
||
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)]
|