Stile: beim Laden vom Server anwenden, Knopf zum Zurueckspeichern (Gruppe MODUL_KARTENSTIL)
- ogc_layers.stil_anwenden(): GET …/style.qml, in eine Temp-Datei, loadNamedStyle; scheitert der Abruf, bleibt die QGIS-Zufallsfarbe (kein Abbruch des Ladens). - ogc_layers.stil_speichern(): saveNamedStyle -> PUT; 403 meldet die fehlende Gruppe im Klartext. - plugin.run_save_style(): Knopf 'Stil des aktiven Layers speichern'; mit Umschalttaste als Vorlage der Art (gilt fuer alle Verfahren, z. B. Karte alter Stand). - README: Abschnitt Stile samt Routen und Berechtigung. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+46
-5
@@ -15,7 +15,7 @@ from functools import partial
|
||||
|
||||
from qgis.PyQt.QtCore import QSettings, QTimer
|
||||
from qgis.PyQt.QtWidgets import QAction, QComboBox, QDialog, QMessageBox
|
||||
from qgis.core import Qgis, QgsProject
|
||||
from qgis.core import Qgis, QgsDataSourceUri, QgsProject
|
||||
|
||||
from .api_client import ApiError, AuthError, KartenApiClient
|
||||
from .layer_manager import (
|
||||
@@ -99,6 +99,9 @@ class VlnKartenPlugin:
|
||||
self.dataset_actions.append(
|
||||
self._add_action("Alle Layer (OGC API) laden", self.run_load_ogc)
|
||||
)
|
||||
self.dataset_actions.append(
|
||||
self._add_action("Stil des aktiven Layers speichern", self.run_save_style)
|
||||
)
|
||||
for key, dataset in DATASETS.items():
|
||||
self.dataset_actions.append(
|
||||
self._add_action(
|
||||
@@ -444,12 +447,50 @@ class VlnKartenPlugin:
|
||||
self._show_error("OGC API", "Für dieses Verfahren gibt es keine Sammlungen "
|
||||
"(oder keine Berechtigung).")
|
||||
return
|
||||
geladen, fehler = ogc_layers.layer_hinzufuegen(
|
||||
# Schrittweise: je Ereignisschleifen-Durchlauf ein Layer, Fortschritt in der
|
||||
# Meldungsleiste. Fehler kommen dort am Ende gesammelt, nicht als Modal-Dialog.
|
||||
ogc_layers.layer_hinzufuegen(
|
||||
self.iface, self.client.base_url, vkz, self.combo.currentText(), collections, authcfg,
|
||||
api_key=None if authcfg else self.client.api_key)
|
||||
if fehler:
|
||||
self._show_error("OGC API — nicht geladen",
|
||||
"\n".join("%s: %s" % f for f in fehler))
|
||||
|
||||
def run_save_style(self):
|
||||
"""Den Stil des aktiven OGC-Layers auf den Server zurückschreiben.
|
||||
|
||||
Erlaubt für Verbandsmitarbeiter und die Gruppe MODUL_KARTENSTIL; der Server antwortet
|
||||
sonst mit 403. Mit gedrückter Umschalttaste wird als **Vorlage der Art** gespeichert —
|
||||
die gilt dann für alle Verfahren (z. B. ein Stil für jede „Karte alter Stand").
|
||||
"""
|
||||
from qgis.PyQt.QtWidgets import QApplication
|
||||
from qgis.PyQt.QtCore import Qt as _Qt
|
||||
|
||||
layer = self.iface.activeLayer()
|
||||
if layer is None or layer.providerType() != "OAPIF":
|
||||
self._show_error("Kein OGC-Layer",
|
||||
"Bitte zuerst einen über „Alle Layer (OGC API) laden“ geladenen "
|
||||
"Layer auswählen.")
|
||||
return
|
||||
cid = QgsDataSourceUri(layer.source()).param("typename")
|
||||
if not cid:
|
||||
self._show_error("Kein OGC-Layer", "Die Datenquelle nennt keine Sammlung (typename).")
|
||||
return
|
||||
vorlage = bool(QApplication.keyboardModifiers() & _Qt.KeyboardModifier.ShiftModifier)
|
||||
settings = QSettings()
|
||||
settings.beginGroup(SETTINGS_GROUP)
|
||||
authcfg = settings.value(ogc_layers.SETTINGS_AUTHCFG, "")
|
||||
settings.endGroup()
|
||||
try:
|
||||
ok, text = ogc_layers.stil_speichern(layer, self.client.base_url, cid,
|
||||
api_key=self.client.api_key, authcfg=authcfg or None,
|
||||
vorlage=vorlage)
|
||||
except AuthError:
|
||||
self._handle_session_expired()
|
||||
return
|
||||
if ok:
|
||||
self.iface.messageBar().pushMessage(
|
||||
"VLN Karten", "Stil für %s gespeichert — %s" % (cid, text),
|
||||
level=Qgis.Success, duration=8)
|
||||
else:
|
||||
self._show_error("Stil nicht gespeichert", text)
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Hilfsfunktionen
|
||||
|
||||
Reference in New Issue
Block a user