{% extends "tesm_core/base.html" %} {% from "tesm_core/macros.html" import field, checkbox, textarea_field, pill, alert, empty_state %} {% block page_title %}Ticket {{ ticket.id[:12] }}…{% endblock %} {% block page_sub %} {{ ticket.customer_name }} · {{ type_labels.get(ticket.type, ticket.type) }} {% if ticket.role != 'customer' %}· {{ role_labels.get(ticket.role, ticket.role) }}{% endif %} {% endblock %} {% block breadcrumb %} {% endblock %} {% block content %} {% if endpoint_missing %} {{ alert(endpoint_missing, 'danger', 'Keine Ausstellung moeglich') }} {% endif %} {% if ticket.status == 'blocked' %} {{ alert('Dieses Ticket ist gesperrt. Es lassen sich keine neuen Lizenzen ausstellen -- weder hier noch ueber den Self-Service des Kunden. Bereits ausgestellte Lizenzen bleiben gueltig.', 'danger', 'Gesperrt') }} {% endif %}
{{ icon('shield', size=17) }} Lizenz ausstellen
{% if has_open_license %} Es existiert bereits eine offene Lizenz -- widerrufen Sie sie zuerst. {% else %} Erzeugt eine signierte Lizenzdatei mit den Werten dieses Tickets. {% endif %}
{% if current_user.has('licenses.create') %}
{% if ticket.role == 'customer' %}
{% endif %} {% else %}

Ihnen fehlt das Recht, Lizenzen auszustellen.

{% endif %}
{{ icon('history', size=17) }} Lizenzen dieses Tickets
{{ licenses | length }} insgesamt
{% if licenses %}
{% for entry in licenses %} {% endfor %}
LizenzAusgestelltZustandLaeuft abHost
{{ entry.license_id[:12] }}… {% if entry.type != ticket.type %}{{ pill(entry.type, 'accent') }}{% endif %} {{ entry.issued_at | dt }} {% if entry.status == 'active' %}{{ pill('aktiv', 'online') }} {% elif entry.status == 'issued' %}{{ pill('ausgestellt', 'info') }} {% elif entry.status == 'revoked' %}{{ pill('widerrufen', 'danger') }} {% else %}{{ pill('deaktiviert', '') }}{% endif %} {% if entry.lifetime %}unbefristet{% else %}{{ entry.expires_at | date }}{% endif %} {{ entry.hostname or '–' | safe }}
{% else %} {{ empty_state('Noch keine Lizenz', 'Stellen Sie die erste Lizenz aus.', 'shield') }} {% endif %}
{% if self_service_url %}
{{ icon('link', size=17) }} Self-Service fuer den Kunden
Ohne Anmeldung nutzbar – die Berechtigung ist der Besitz dieses Links

Damit kann der Kunde seine Lizenz herunterladen, bei einem Systemwechsel freigeben und neu ausstellen. Der Link enthaelt 192 Bit Zufall und ist nicht ratbar -- behandeln Sie ihn wie ein Passwort.

Kundenportal: der Kunde fordert dort selbst einen zeitlich begrenzten Zugangslink an und pflegt seine Stammdaten.

{% elif ticket.role != 'customer' %} {{ alert('Fuer Lizenzserver-Tickets ist der Self-Service vollstaendig gesperrt -- diese Lizenzen werden ausschliesslich hier verwaltet.', 'info') }} {% endif %}
{{ icon('sliders', size=17) }} Ticketdaten
{% if ticket.status == 'blocked' %}{{ pill('gesperrt', 'danger') }} {% else %}{{ pill('offen', 'online') }}{% endif %}
{{ alert('Aenderungen wirken auf die naechste Ausstellung. Kunde und Rolle sind unveraenderlich.', 'info') }} {% if ticket.role == 'customer' %}
Module
{% for module in modules %} {{ checkbox('modules', module_labels[module], value=module, checked=module in ticket_modules, disabled=not current_user.has('tickets.edit')) }} {% endfor %}
{% endif %} {{ field('valid_days', 'Laufzeit (Tage)', value=ticket.valid_days, type='number', disabled=not current_user.has('tickets.edit')) }} {{ checkbox('lifetime', 'Unbefristet', checked=ticket.lifetime, disabled=not current_user.has('tickets.edit')) }} {{ textarea_field('notes', 'Interne Notiz', value=ticket.notes, rows=2) }}
Ticket-ID
{{ ticket.id }}
Rolle
{{ role_labels.get(ticket.role, ticket.role) }}
Angelegt
{{ ticket.created_at | dt }} von {{ ticket.created_by or '-' }}
{% if current_user.has('tickets.edit') %} {% endif %}
{% if current_user.has('tickets.edit') or current_user.has('tickets.delete') %}
{{ icon('lock', size=17) }} Sperre und Loeschung
{% if current_user.has('tickets.edit') %}
{% endif %} {% if current_user.has('tickets.delete') %}
{% endif %}
{% endif %}
{% endblock %} {% block scripts %} {% if ticket.role == 'customer' %} {% endif %} {% endblock %}