{% extends "tesm_core/base.html" %} {% from "tesm_core/macros.html" import pill, search_box, empty_state, alert %} {% block page_title %}Tickets{% endblock %} {% block page_sub %} {{ tickets | length }} Tickets · ein Ticket ist der dauerhafte Anspruch auf eine Lizenz {% endblock %} {% block topbar_extra %} {{ search_box('tickets-table', 'Kunde, Typ, ID ...') }} {% if current_user.has('tickets.create') %} {{ icon('plus', size=15) }} Ticket anlegen {% endif %} {% endblock %} {% block content %} {% if endpoint_missing %} {{ alert(endpoint_missing, 'danger', 'Keine Ausstellung möglich') }} {% endif %} {{ alert('Ein Ticket beschreibt den Anspruch (Typ, Module, Laufzeit); die Lizenz ist die daraus erzeugte, signierte Datei. Änderungen am Ticket wirken auf die nächste Ausstellung -- bereits ausgestellte Lizenzen bleiben unverändert.', 'info') }}
{% for ticket in tickets %} {% endfor %}
Kunde Ticket Typ Module Laufzeit Zustand Offene Lizenz
{{ ticket.customer_name }} {% if ticket.role != 'customer' %} {{ pill(role_labels.get(ticket.role, ticket.role), 'accent') }} {% endif %} {{ ticket.id[:12] }}… {{ type_labels.get(ticket.type, ticket.type) }} {% set mods = ticket.modules | from_json %} {% if mods %}{{ mods | map('replace', '_', ' ') | join(', ') }} {% else %}keine{% endif %} {% if ticket.lifetime %}{{ pill('unbefristet', 'online') }} {% else %}{{ ticket.valid_days }} Tage{% endif %} {% if ticket.status == 'blocked' %}{{ pill('gesperrt', 'danger') }} {% else %}{{ pill('offen', 'online') }}{% endif %} {% set entry = open_licenses.get(ticket.id) %} {% if entry %} {{ entry.status }} {% if entry.lifetime %}{{ pill('unbefristet', 'online') }} {% elif entry.color == 'red' %}{{ pill(entry.days_left ~ ' Tage', 'danger') }} {% elif entry.color == 'orange' %}{{ pill(entry.days_left ~ ' Tage', 'warning') }} {% else %}{{ pill(entry.days_left ~ ' Tage', 'online') }}{% endif %} {% else %} keine {% endif %}
{% if not tickets %} {{ empty_state('Keine Tickets', 'Legen Sie das erste Ticket für einen Kunden an.', 'ticket') }} {% endif %}
{% endblock %}