{% extends "tesm_core/base.html" %} {% from "tesm_core/macros.html" import pill, search_box, empty_state %} {% block page_title %}Lizenzen{% endblock %} {% block page_sub %}{{ licenses | length }} Lizenzen{% if active_filter %} · Filter: {{ active_filter }}{% endif %}{% endblock %} {% block topbar_extra %} {{ search_box('licenses-table', 'Kunde, Lizenz-ID, Host ...') }} {% if current_user.has('licenses.execute') %} {{ icon('transfer', size=15) }} Offline-Code {% endif %} {% endblock %} {% block content %}
alle {% for state in states %} {{ state }} {% endfor %}
{% for entry in licenses %} {% endfor %}
Kunde Lizenz Typ Zustand Restlaufzeit Host Heartbeat
{{ entry.customer_name }} {% if entry.role != 'customer' %}{{ pill(role_labels.get(entry.role, entry.role), 'accent') }}{% endif %} {{ entry.license_id[:12] }}… {{ type_labels.get(entry.type, entry.type) }} {% 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 %}{{ pill('unbefristet', 'online') }} {% elif entry.is_expired %}{{ pill('abgelaufen', 'danger') }} {% 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 %} {{ entry.hostname or '–' | safe }} {% if entry.last_heartbeat_at %} {{ entry.last_heartbeat_at | dt }} {% else %}nie{% endif %}
{% if not licenses %}{{ empty_state('Keine Lizenzen', 'Zu diesem Filter gibt es nichts.', 'shield') }}{% endif %}
{% endblock %}