Files
Plugin_SN_Verfahrensgebiet/ui/eigentuemer_treffer.py
T
DanielandClaude Opus 5.5 b105894241 PER_RECHTSPERSON als Rohwert in der Trefferliste zeigen (#56)
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>
2026-10-06 13:13:50 +02:00

69 lines
2.6 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_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)]