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 <noreply@anthropic.com>
This commit is contained in:
@@ -257,7 +257,11 @@
|
|||||||
<td class="mono fs-xs">{{ key.key_id }}</td>
|
<td class="mono fs-xs">{{ key.key_id }}</td>
|
||||||
<td class="fs-sm">{{ key.label }}
|
<td class="fs-sm">{{ key.label }}
|
||||||
<div class="fs-xs faint">{{ key.added_at | dt }}</div></td>
|
<div class="fs-xs faint">{{ key.added_at | dt }}</div></td>
|
||||||
<td class="fs-xs">{{ key.source }}</td>
|
<td class="fs-xs">
|
||||||
|
{{ key.source | issuer_source }}
|
||||||
|
{% set erklaerung = key.source | issuer_source_hint %}
|
||||||
|
{% if erklaerung %}<div class="faint">{{ erklaerung }}</div>{% endif %}
|
||||||
|
</td>
|
||||||
<td class="actions">
|
<td class="actions">
|
||||||
{% if current_user.is_admin %}
|
{% if current_user.is_admin %}
|
||||||
<form method="post" data-no-guard
|
<form method="post" data-no-guard
|
||||||
|
|||||||
@@ -154,6 +154,32 @@ def yes_no(value: Any) -> str:
|
|||||||
return "ja" if value else "nein"
|
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:
|
def from_json(value: Any) -> Any:
|
||||||
"""Parst einen JSON-String aus der Datenbank -- fuer Modul-/Rechtelisten.
|
"""Parst einen JSON-String aus der Datenbank -- fuer Modul-/Rechtelisten.
|
||||||
|
|
||||||
@@ -233,6 +259,8 @@ def init_app(app: Flask) -> None:
|
|||||||
number=format_number,
|
number=format_number,
|
||||||
yes_no=yes_no,
|
yes_no=yes_no,
|
||||||
from_json=from_json,
|
from_json=from_json,
|
||||||
|
issuer_source=issuer_source,
|
||||||
|
issuer_source_hint=issuer_source_hint,
|
||||||
)
|
)
|
||||||
app.jinja_env.trim_blocks = True
|
app.jinja_env.trim_blocks = True
|
||||||
app.jinja_env.lstrip_blocks = True
|
app.jinja_env.lstrip_blocks = True
|
||||||
|
|||||||
Reference in New Issue
Block a user