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>
This commit is contained in:
2026-10-06 13:13:50 +02:00
co-authored by Claude Opus 5.5
parent 29719a8a99
commit b105894241
5 changed files with 40 additions and 23 deletions
+11 -7
View File
@@ -62,7 +62,7 @@ class Eigentuemer:
ortsteil: str = ""
emails: Tuple[str, ...] = ()
verstorben: bool = False
rechtsperson: bool = False
rechtsperson: Tuple[str, ...] = ()
per_ids: Tuple[str, ...] = ()
konten: Tuple[str, ...] = ()
feature_ids: Tuple[int, ...] = ()
@@ -85,8 +85,12 @@ class Eigentuemer:
@property
def hinweise(self) -> str:
"""Kennzeichen für die Trefferliste (nicht für das Anzeigefenster)."""
return ", ".join(t for t, gesetzt in (("verstorben", self.verstorben),
("Rechtsperson", self.rechtsperson)) if gesetzt)
return "verstorben" if self.verstorben else ""
@property
def rechtsperson_text(self) -> str:
"""Rohwert(e) von ``PER_RECHTSPERSON`` (bekannt: 0, 1, 5, 9), noch nicht entschlüsselt."""
return ", ".join(self.rechtsperson)
def _text(wert) -> str:
@@ -192,17 +196,17 @@ def suche_eigentuemer(layer, nachname: str, vorname: str) -> List[Eigentuemer]:
gruppe = gruppen.setdefault(_gruppenschluessel(werte), {
"werte": werte, "emails": [], "per_ids": [], "konten": [], "feature_ids": [],
"verstorben": False, "rechtsperson": False,
"verstorben": False, "rechtsperson": [],
})
for k in ("anrede", "titel"):
if not gruppe["werte"][k] and werte[k]:
gruppe["werte"][k] = werte[k]
for liste, wert in (("emails", werte["email"]), ("per_ids", werte["per_id"]), ("konten", werte["konto"])):
for liste, wert in (("emails", werte["email"]), ("per_ids", werte["per_id"]),
("konten", werte["konto"]), ("rechtsperson", werte["rechtsperson"])):
if wert and wert not in gruppe[liste]:
gruppe[liste].append(wert)
gruppe["feature_ids"].append(feature.id())
gruppe["verstorben"] = gruppe["verstorben"] or _ist_gesetzt(werte["verstorben"])
gruppe["rechtsperson"] = gruppe["rechtsperson"] or _ist_gesetzt(werte["rechtsperson"])
treffer = []
for gruppe in gruppen.values():
@@ -211,7 +215,7 @@ def suche_eigentuemer(layer, nachname: str, vorname: str) -> List[Eigentuemer]:
anrede=w["anrede"], titel=w["titel"], vorname=w["vorname"], nachname=w["nachname"],
strasse=w["strasse"], plz=w["plz"], wohnort=w["wohnort"], ortsteil=w["ortsteil"],
emails=tuple(gruppe["emails"]),
verstorben=gruppe["verstorben"], rechtsperson=gruppe["rechtsperson"],
verstorben=gruppe["verstorben"], rechtsperson=tuple(gruppe["rechtsperson"]),
per_ids=tuple(gruppe["per_ids"]), konten=tuple(gruppe["konten"]),
feature_ids=tuple(gruppe["feature_ids"]),
))