länderkennungs-dict angelegt

This commit is contained in:
2026-08-26 12:20:10 +02:00
parent 7a5ed12797
commit 3489a08638
3 changed files with 83 additions and 0 deletions
+1
View File
@@ -21,6 +21,7 @@ from .ly_metadata_wrapper import (
)
from .ly_style_wrapper import apply_style
from .dialog_wrapper import ask_yes_no, ask_overwrite_append_cancel_custom, ask_ergaenzen_entfernen_ersetzen_abbrechen, ask_detailpruefung_oder_vg_laden
from .laenderkennung import get_laenderkennung, LAENDERKENNUNGEN
from .message_wrapper import (
_get_message_bar,
+51
View File
@@ -0,0 +1,51 @@
"""
sn_basis/functions/laenderkennung.py ALKIS-Länderkennung je Plugin-Präfix.
AGLB-länderspezifische Funktionen (z.B. Flurstückskennzeichen-Bildung) sollen
nicht hart auf Sachsen ("14") verdrahtet sein, sondern die Länderkennung über
dieses generische Mapping ermitteln. Für neue Bundesländer genügt ein weiterer
Eintrag in ``LAENDERKENNUNGEN`` die aufrufende Logik bleibt unverändert.
"""
#: Mapping von sn_*-Plugin-Präfix (ohne Unterstrich) auf die zweistellige
#: ALKIS-Länderkennung. Aktuell nur Sachsen befüllt; weitere Bundesländer
#: können hier ergänzt werden, sobald Schwesterplugins dafür existieren.
LAENDERKENNUNGEN: dict[str, str] = {
"sn": "14", # Sachsen
}
def get_laenderkennung(plugin_praefix: str | None = None) -> str:
"""Ermittelt die ALKIS-Länderkennung für einen Plugin-Präfix.
Parameters
----------
plugin_praefix : str, optional
Plugin-Präfix ohne Unterstrich, z.B. ``"sn"``. Wird kein Präfix
übergeben, wird er aus dem Package-Namen des aufrufenden Moduls
abgeleitet (``__name__`` des Aufrufers, erstes ``_``-Segment).
Returns
-------
str
Zweistellige Länderkennung, z.B. ``"14"``.
Raises
------
KeyError
Wenn für den ermittelten Präfix keine Länderkennung hinterlegt ist.
"""
if not plugin_praefix:
import inspect
frame = inspect.stack()[1]
caller_module = frame.frame.f_globals.get("__name__", "")
plugin_praefix = caller_module.split(".")[0].split("_")[0]
plugin_praefix = plugin_praefix.lower()
if plugin_praefix not in LAENDERKENNUNGEN:
raise KeyError(
f"Keine Länderkennung für Plugin-Präfix '{plugin_praefix}' hinterlegt. "
f"Bekannte Präfixe: {sorted(LAENDERKENNUNGEN)}"
)
return LAENDERKENNUNGEN[plugin_praefix]