Fassung 0.7.0: Landkreis-Linkliste, oFB liest nur, Untergruppen, 403 meldet nicht ab
- Auswahl über GET /tgen/auswahl (Manager seit 06.10.2026): oben die eigenen Landkreise („… — Linkliste des Landkreises“), dann die Verfahren; als oFB die Verfahren des Landkreises mit „(nur lesen)“. Älterer Server ohne die Route: Rückfall auf /tgen. - Landkreis gewählt: „Liste holen“ lädt die Linkliste des ganzen Landkreises; „Layer laden“ erklärt, dass es für einen Landkreis keine Verfahrenslayer gibt. - 401 und 403 getrennt: nur 401 (AuthError) meldet ab, 403 (KeinZugriff) zeigt eine Meldung. Bis 0.6.0 verwarf jedes 403 den gespeicherten API-Key. - OGC-Sammlungen mit vln:schreibbar: false werden schreibgeschützt geladen; Meldungen für Stil und Verkehrszeichen nennen „nur lesen“ als Grund. - Linkliste: Gruppe › Untergruppe › Layer im Ebenenbaum (linkliste.zielgruppe), Untergruppe auch in der Dienstliste. - README: Abschnitt „Geodienste aus der Linkliste“; Tests ohne Netz: tools/headless_linkliste_test.py (neu), tools/headless_panel_test.py erweitert — beide grün mit QGIS 4.2 offscreen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+23
-9
@@ -17,7 +17,7 @@ from qgis.PyQt.QtWidgets import QAction, QDialog, QMessageBox
|
||||
from qgis.core import Qgis, QgsDataSourceUri, QgsProject
|
||||
|
||||
from .api_client import ApiError, AuthError, KartenApiClient
|
||||
from .panel import VlnPanel
|
||||
from .panel import VlnPanel, ist_landkreis
|
||||
from .login_dialog import LoginDialog, SETTINGS_GROUP
|
||||
from . import linkliste
|
||||
from . import ogc_layers
|
||||
@@ -143,9 +143,10 @@ class VlnKartenPlugin:
|
||||
self.populate_verfahren()
|
||||
|
||||
def populate_verfahren(self):
|
||||
"""Füllt die Auswahlliste mit allen Verfahren aus GET /tgen."""
|
||||
"""Füllt die Auswahlliste aus ``GET /tgen/auswahl``: eigene Verfahren, als oFB die
|
||||
Verfahren des Landkreises (nur lesen) und die Landkreise selbst (für die Linkliste)."""
|
||||
try:
|
||||
verfahren = self.client.get_verfahren()
|
||||
auswahl = self.client.get_auswahl()
|
||||
except AuthError:
|
||||
self._handle_session_expired()
|
||||
return
|
||||
@@ -159,8 +160,15 @@ class VlnKartenPlugin:
|
||||
return
|
||||
|
||||
self.panel.set_angemeldet(True, self.client.mail or "API-Key")
|
||||
self.panel.set_verfahren(verfahren)
|
||||
self.panel.set_status("%d Verfahren geladen." % len(verfahren))
|
||||
verfahren, aemter = auswahl["verfahren"], auswahl["aemter"]
|
||||
self.panel.set_verfahren(verfahren, aemter)
|
||||
text = "%d Verfahren geladen" % len(verfahren)
|
||||
lesend = sum(1 for v in verfahren if v.get("zugriff") == "lesen")
|
||||
if lesend:
|
||||
text += " (davon %d nur lesen)" % lesend
|
||||
if aemter:
|
||||
text += ", %d Landkreis(e) für die Linkliste" % len(aemter)
|
||||
self.panel.set_status(text + ".")
|
||||
self.restore_project_selection()
|
||||
|
||||
def _handle_session_expired(self):
|
||||
@@ -229,6 +237,12 @@ class VlnKartenPlugin:
|
||||
if not vkz:
|
||||
self._show_error("Kein Verfahren", "Bitte zuerst ein Verfahren auswählen.")
|
||||
return
|
||||
if ist_landkreis(vkz):
|
||||
self._show_error("Landkreis gewählt",
|
||||
"Für einen Landkreis gibt es keine Verfahrenslayer — bitte ein "
|
||||
"Verfahren wählen. Die Linkliste des Landkreises holen Sie unter "
|
||||
"„Geodienste“.")
|
||||
return
|
||||
authcfg = ogc_layers.authcfg_sicherstellen(self.client.api_key, SETTINGS_GROUP)
|
||||
if not authcfg:
|
||||
self.iface.messageBar().pushMessage(
|
||||
@@ -363,11 +377,11 @@ class VlnKartenPlugin:
|
||||
self.panel.set_status("%d von %d Layern gespeichert." % (len(gespeichert), len(offen)))
|
||||
|
||||
def run_dienste_holen(self):
|
||||
"""Die Linkliste des gewählten Verfahrens holen und in der Seitenleiste anzeigen.
|
||||
"""Die Linkliste des gewählten Verfahrens oder Landkreises holen und anzeigen.
|
||||
|
||||
Der Server liefert sie bereits aufgelöst: landesweit, Landkreis, Team und Verfahren
|
||||
sind zusammengeführt, geerbte Einträge tragen ihre Herkunft. Das Plugin rechnet nichts
|
||||
nach, es zeigt und lädt.
|
||||
Der Server liefert sie bereits aufgelöst (landesweit und Landkreis), geerbte Einträge
|
||||
tragen ihre Herkunft. Das Plugin rechnet nichts nach, es zeigt und lädt. Ein 403 meldet
|
||||
nicht ab (seit 0.7.0), sondern zeigt nur, dass hier keine Berechtigung besteht.
|
||||
"""
|
||||
if not self._ensure_logged_in():
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user