Linkliste: Kartenwahl hakt die passenden Dienste vor

Erik, 06.10.2026: neben dem Thema eine zweite Gliederung — für welche Karten ein Dienst gedacht
ist (Wege- und Gewässerplan, Neugestaltungsgrundsätze, Wertermittlung; mehrfach). Der Manager
liefert dafür je Eintrag `karten` und den Katalog unter GET /linkliste/karten.

Über der Dienstliste steht jetzt je Karte ein Häkchen (Katalog vom Server, Rückfall auf die drei
Karten bei älterem Server). Eine oder mehrere Karten gewählt: angehakt sind die Dienste mit
mindestens einer passenden Karte (linkliste.vorhaken), ohne Wahl alle wie bisher; von Hand
nachjustieren bleibt möglich, eine neu geholte Liste übernimmt die Wahl. Karten im Tooltip.
Fassung bleibt 0.7.0 (noch nicht ausgeliefert). Tests ohne Netz erweitert, beide grün.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
KAI
2026-10-06 23:19:47 +02:00
co-authored by Claude Opus 5.5
parent a56bf7c397
commit c3386dc454
7 changed files with 139 additions and 3 deletions
+20
View File
@@ -91,6 +91,26 @@ pruefe(zweiter.name() == "Biotope" and len(oben.children()) == 2 and len(natur.c
"zweiter Ladelauf legt nichts doppelt an")
pruefe(sonst.name() == "Sonstiges" and not sonst.children(), "ohne Untergruppe direkt in die Gruppe")
print("== Karten: Katalog und Vorhaken ==")
from vln_karten.linkliste import KARTEN_VORGABE, karten_laden, vorhaken
d = [{"name": "A", "karten": ["p41"]}, {"name": "B", "karten": ["ngg", "we"]}, {"name": "C"}]
pruefe(vorhaken(d, []) == [True, True, True], "ohne Kartenwahl alles angehakt")
pruefe(vorhaken(d, ["p41"]) == [True, False, False], "Wege- und Gewässerplan: nur A")
pruefe(vorhaken(d, ["p41", "we"]) == [True, True, False], "zwei Karten: A und B (mehrfach)")
k = ac.KartenApiClient(api_key="pruef")
k._request = lambda m, p, **kw: {"karten": [{"schluessel": "p41", "name": "Wege- und Gewässerplan"},
{"schluessel": "kas", "name": "Karte alter Stand"}]}
pruefe([x["schluessel"] for x in karten_laden(k)] == ["p41", "kas"],
"Katalog vom Server (neue Karte ohne neue Plugin-Fassung)")
def kein_katalog(m, p, **kw):
raise ac.ApiError("GET /linkliste/karten lieferte HTTP 404", 404)
k._request = kein_katalog
pruefe(karten_laden(k) == KARTEN_VORGABE, "aelterer Server: Vorgabe der drei Karten")
print("== Ergebnis: %d Fehler ==" % len(FEHLER))
for f in FEHLER:
print(" -", f)
+21
View File
@@ -88,6 +88,27 @@ panel.set_dienste([{"name": "Denkmal Punkte", "gruppe_name": "Kultur", "untergru
pruefe(panel.dienste_liste.item(0).text().startswith("Denkmal Punkte · Kultur › Denkmal · "),
"Untergruppe in der Dienstliste: %r" % panel.dienste_liste.item(0).text())
pruefe(panel.dienste_liste.item(1).text().startswith("Wald · Natur · "), "ohne Untergruppe wie bisher")
print("== Karten: Wahl hakt vor ==")
from vln_karten.linkliste import KARTEN_VORGABE
panel.set_karten(KARTEN_VORGABE)
pruefe(list(panel.karten_haken) == ["p41", "ngg", "we"] and panel.karten_beschriftung.isVisibleTo(panel),
"je Karte ein Haekchen")
panel.set_dienste([{"name": "Biotope", "gruppe_name": "Natur", "karten": ["ngg"]},
{"name": "Wege", "gruppe_name": "Verkehr", "karten": ["p41", "ngg"]},
{"name": "Bodenwert", "gruppe_name": "Boden", "karten": ["we"]}])
an = lambda: [panel.dienste_liste.item(i).checkState() == Qt.CheckState.Checked
for i in range(panel.dienste_liste.count())]
pruefe(an() == [True, True, True], "ohne Wahl alles angehakt")
panel.karten_haken["p41"].setChecked(True)
pruefe(an() == [False, True, False], "Wege- und Gewaesserplan: nur passende: %r" % an())
panel.karten_haken["we"].setChecked(True)
pruefe(an() == [False, True, True], "zwei Karten zugleich: %r" % an())
panel.set_dienste([{"name": "Neu", "karten": ["we"]}, {"name": "Ohne"}])
pruefe(an() == [True, False], "neue Liste uebernimmt die Kartenwahl: %r" % an())
pruefe("Karten: Wertermittlung" in panel.dienste_liste.item(0).toolTip(), "Karten im Tooltip")
for haken in panel.karten_haken.values():
haken.setChecked(False)
panel.set_angemeldet(False)
GERUFEN.clear()