52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
"""
|
||||
|
|
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]
|