Files
erik 091ef281b0 QGIS-Plugin VLN Karten: Verfahrens-Layer der Karten-API laden und hochladen
Lädt Verfahrensgebiet, Plan 41, Karte alter Stand (KAS) und Wertermittlung
(WE) je VKZ vollständig aus KARTE_OBJEKT (Listen-Endpunkt mit Paging) und
schreibt sie per PUT zurück. Einmaliger Login (mail/password -> userauth),
API-Key persistiert in QSettings; Verfahrens-Auswahl in der Toolbar wird
je QGIS-Projekt gemerkt. Gemischte Geometrietypen werden beim Laden in
Punkte-/Linien-/Flächen-Layer gesplittet und beim Hochladen wieder
vereint. Qt5/Qt6-kompatibel (QGIS 3.22+ und QGIS 4).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 13:31:44 +02:00

60 lines
1.7 KiB
Python

"""Anmeldedialog: E-Mail und Passwort.
Die Server-URL ist fest im Client hinterlegt (api_client.DEFAULT_BASE_URL).
Die E-Mail-Adresse wird in den QGIS-Einstellungen gemerkt, das Passwort
bewusst nicht.
"""
from qgis.PyQt.QtCore import QSettings
from qgis.PyQt.QtWidgets import (
QDialog,
QDialogButtonBox,
QFormLayout,
QLineEdit,
)
SETTINGS_GROUP = "vln_karten"
class LoginDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("VLN Karten — Anmeldung")
self.setMinimumWidth(380)
settings = QSettings()
settings.beginGroup(SETTINGS_GROUP)
self.mail_edit = QLineEdit(settings.value("mail", ""))
settings.endGroup()
self.mail_edit.setPlaceholderText("vorname.name@beispiel.de")
self.password_edit = QLineEdit()
self.password_edit.setEchoMode(QLineEdit.EchoMode.Password)
layout = QFormLayout(self)
layout.addRow("E-Mail:", self.mail_edit)
layout.addRow("Passwort:", self.password_edit)
buttons = QDialogButtonBox(
QDialogButtonBox.StandardButton.Ok
| QDialogButtonBox.StandardButton.Cancel,
parent=self,
)
buttons.button(QDialogButtonBox.StandardButton.Ok).setText("Anmelden")
buttons.accepted.connect(self.accept)
buttons.rejected.connect(self.reject)
layout.addRow(buttons)
def accept(self):
settings = QSettings()
settings.beginGroup(SETTINGS_GROUP)
settings.setValue("mail", self.mail())
settings.endGroup()
super().accept()
def mail(self):
return self.mail_edit.text().strip()
def password(self):
return self.password_edit.text()