Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
25 lines
965 B
Python
25 lines
965 B
Python
"""Reservierte Namen (Ausbaustufe 12).
|
|
|
|
Alles, was mit SYSTEM_PREFIX beginnt, gehört dem Tool: synthetische Serien
|
|
wie „System-Ist" (v_projection) oder „System-Kreditraten" (Planungs-Panel).
|
|
Kategorien und Szenarien dürfen solche Namen nicht tragen, sonst verschmelzen
|
|
sie in Grafana mit den Tool-Serien.
|
|
"""
|
|
from fastapi import HTTPException
|
|
|
|
SYSTEM_PREFIX = "System-"
|
|
RESERVED_MESSAGE = (f"Namen, die mit »{SYSTEM_PREFIX}« beginnen, sind für "
|
|
"vom Tool erzeugte Einträge reserviert")
|
|
|
|
|
|
def is_reserved_name(name: str) -> bool:
|
|
"""True, wenn name (ohne Randleerzeichen, Groß/klein egal) mit dem
|
|
System-Präfix beginnt."""
|
|
return name.strip().casefold().startswith(SYSTEM_PREFIX.casefold())
|
|
|
|
|
|
def check_reserved_name(name: str | None) -> None:
|
|
"""None (Feld nicht gesetzt) -> keine Prüfung; reserviert -> 422."""
|
|
if name is not None and is_reserved_name(name):
|
|
raise HTTPException(422, RESERVED_MESSAGE)
|