From 4e488625fed3aed71e6a4b511210b9e21255d63d Mon Sep 17 00:00:00 2001 From: Tim Eertmoed Date: Wed, 2 Sep 2026 22:26:44 +0200 Subject: [PATCH] Herkunft eines gepinnten Ausstellers in Klartext In der Spalte "Quelle" stand das Kuerzel des Protokolls: "tofu". Das ist Fachjargon (Trust On First Use) und als Wert in einer Tabelle unbrauchbar -- es sieht aus wie ein Tippfehler. Jetzt: "Erstkontakt" (beim ersten Einspielen automatisch uebernommen) und "Bestaetigt" (Ausstellerwechsel von einem Administrator freigegeben). Die Uebersetzung liegt in tesm_core.ui als ISSUER_SOURCES mit zwei Jinja-Filtern, nicht in zwei Vorlagen: der Lizenzserver zeigt dieselbe Angabe unter "Eigene Lizenz", und zwei Texte fuer denselben Sachverhalt laufen auseinander. Unbekannte Werte bleiben unveraendert sichtbar statt hinter einem Platzhalter zu verschwinden. Co-Authored-By: Claude Opus 5 --- .../templates/license/own_license.html | 2 +- packages/tesm-core/src/tesm_core/ui.py | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/apps/tesm-license/src/tesm_license/templates/license/own_license.html b/apps/tesm-license/src/tesm_license/templates/license/own_license.html index 4b8ce9a..18bb47c 100644 --- a/apps/tesm-license/src/tesm_license/templates/license/own_license.html +++ b/apps/tesm-license/src/tesm_license/templates/license/own_license.html @@ -200,7 +200,7 @@
{% for key in trusted_keys %}
{{ key.key_id }}
-
{{ key.label }} ({{ key.source }}, {{ key.added_at | date }})
+
{{ key.label }} ({{ key.source | issuer_source }}, {{ key.added_at | date }})
{% endfor %}
{% else %} diff --git a/packages/tesm-core/src/tesm_core/ui.py b/packages/tesm-core/src/tesm_core/ui.py index d9038b5..1a70483 100644 --- a/packages/tesm-core/src/tesm_core/ui.py +++ b/packages/tesm-core/src/tesm_core/ui.py @@ -154,6 +154,32 @@ def yes_no(value: Any) -> str: return "ja" if value else "nein" +#: Woher ein gepinnter Ausstellerschluessel kommt -- in Klartext. +#: +#: In der Datenbank stehen die Kuerzel des Protokolls. "tofu" ist dabei +#: Fachjargon (Trust On First Use) und sah in der Spalte aus wie ein +#: Tippfehler. Uebersetzt wird an genau einer Stelle, damit die beiden +#: Anwendungen nicht auseinanderlaufen. +ISSUER_SOURCES: dict[str, tuple[str, str]] = { + "tofu": ("Erstkontakt", "beim ersten Einspielen automatisch uebernommen"), + "admin-confirmed": ( + "Bestaetigt", + "Ausstellerwechsel von einem Administrator freigegeben", + ), +} + + +def issuer_source(value: Any) -> str: + """Kurzform der Herkunft. Unbekannte Werte bleiben unveraendert sichtbar.""" + label, _ = ISSUER_SOURCES.get(str(value or ""), (str(value or "-"), "")) + return label + + +def issuer_source_hint(value: Any) -> str: + """Erklaerung zur Herkunft, oder leer.""" + return ISSUER_SOURCES.get(str(value or ""), ("", ""))[1] + + def from_json(value: Any) -> Any: """Parst einen JSON-String aus der Datenbank -- fuer Modul-/Rechtelisten. @@ -233,6 +259,8 @@ def init_app(app: Flask) -> None: number=format_number, yes_no=yes_no, from_json=from_json, + issuer_source=issuer_source, + issuer_source_hint=issuer_source_hint, ) app.jinja_env.trim_blocks = True app.jinja_env.lstrip_blocks = True