Files
tesm-license/apps/tesm-license/src/tesm_license/templates/license/manual_code.html
T
alientimandClaude Opus 5 ab5fda658e Umlaute in der Oberflaeche, Sitzungskopplung, Statusanzeigen
Echte Umlaute in allen Texten der Oberflaeche und in den Markdown-Dateien.
Die Einbindung von Dateifreigaben haengt jetzt an der Sitzung: wird sie
widerrufen oder laeuft sie ab, verschwinden die Freigaben mit ihr. Neu
einstellbar ist die automatische Abmeldung bei Leerlauf (Vorgabe 30 Minuten).
Ein Geraet, das nicht antwortet, bietet nur noch "Einschalten (PoE)" an --
Neustart ueber SSH oder RPC braucht ein erreichbares Geraet. Der Zeitgeber der
naechsten Pruefung und die Restlaufzeit der Lizenz stehen jetzt oben in der
Kopfzeile; der doppelte Knopf darunter ist weg. Millisekunden werden ab einer
Sekunde als Sekunden und ab einer Minute als m:ss dargestellt.

Ausserdem: Release-Tarball nicht mehr im Repository -- er haengt am Release.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 23:54:35 +02:00

69 lines
2.5 KiB
HTML

{% extends "tesm_core/base.html" %}
{% from "tesm_core/macros.html" import alert %}
{% block page_title %}Offline-Aktivierung{% endblock %}
{% block page_sub %}Code des Kunden verarbeiten und Antwortcode zurückgeben{% endblock %}
{% block content %}
{{ alert('Beide Codes sind signierte Protokollobjekte -- inhaltlich identisch mit dem
Online-Weg, nur als kopierbarer Text. Die Prüfungen (Signatur, Frische, Nonce, Fingerprint)
laufen exakt gleich; es gibt hier keine Abkürzung.', 'info') }}
<div class="grid grid--split">
<section class="card">
<div class="card__header">
<div class="flex-1"><div class="card__title">{{ icon('upload', size=17) }} Code des Kunden</div></div>
</div>
<form method="post">
<input type="hidden" name="{{ csrf_field_name }}" value="{{ csrf_token() }}">
<div class="card__body">
<label class="field">
<span class="field__label">Anfragecode</span>
<textarea class="textarea input--mono" name="code" rows="8" required
placeholder="Vom Kunden erhaltenen Code einfügen ..."></textarea>
<span class="field__hint">Umbrüche und Leerzeichen sind erlaubt.</span>
</label>
</div>
<div class="card__footer">
<button class="btn btn--primary" type="submit" data-busy-label="Verarbeite ...">
Verarbeiten
</button>
</div>
</form>
</section>
<div class="stack">
{% if summary %}
<section class="card">
<div class="card__header">
<div class="flex-1"><div class="card__title">{{ icon('info', size=17) }} Inhalt der Anfrage</div></div>
</div>
<div class="card__body">
<dl class="kv fs-sm">
{% for key, value in summary.items() %}
<dt>{{ key }}</dt><dd class="mono break-all">{{ value }}</dd>
{% endfor %}
</dl>
</div>
</section>
{% endif %}
{% if response_code %}
<section class="card card--accent">
<div class="card__header">
<div class="flex-1">
<div class="card__title">{{ icon('download', size=17) }} Antwortcode</div>
<div class="card__sub">{{ message }}</div>
</div>
<button class="btn btn--sm" type="button" data-copy="#response-code">
{{ icon('copy', size=14) }} Kopieren
</button>
</div>
<div class="card__body">
<pre class="code-block code-block--wrap" id="response-code">{{ response_code }}</pre>
</div>
</section>
{% endif %}
</div>
</div>
{% endblock %}