{% extends "tesm_core/base.html" %} {% from "tesm_core/macros.html" import field, textarea_field, pill, empty_state, alert %} {% block page_title %}{{ customer.name }}{% endblock %} {% block page_sub %} {{ tickets | length }} Ticket(s) · {{ licenses | length }} Lizenz(en) {% endblock %} {% block breadcrumb %} {% endblock %} {% block topbar_extra %} {% if current_user.has('tickets.create') %} {{ icon('plus', size=15) }} Ticket anlegen {% endif %} {% endblock %} {% block content %}
{{ icon('ticket', size=17) }} Tickets
Verwaltung auf der eigenen Ticket-Seite
{% if tickets %}
{% for ticket in tickets %} {% endfor %}
TicketTypRolleLaufzeitZustand
{{ ticket.id[:12] }}… {{ ticket.type }} {% if ticket.role != 'customer' %}{{ pill(ticket.role, 'accent') }} {% else %}Kunde{% endif %} {% if ticket.lifetime %}unbefristet{% else %}{{ ticket.valid_days }} Tage{% endif %} {% if ticket.status == 'blocked' %}{{ pill('gesperrt', 'danger') }} {% else %}{{ pill('offen', 'online') }}{% endif %}
{% else %} {{ empty_state('Keine Tickets', 'Ohne Ticket kann keine Lizenz ausgestellt werden.', 'ticket') }} {% endif %}
{{ icon('shield', size=17) }} Lizenzen
{% if licenses %}
{% for entry in licenses %} {% endfor %}
LizenzTypZustandLaeuft abHost
{{ entry.license_id[:12] }}… {{ 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 %}unbefristet {% else %} {{ entry.expires_at | date }} {% if entry.color == 'red' %}{{ pill('kritisch', 'danger') }} {% elif entry.color == 'orange' %}{{ pill('bald', 'warning') }}{% endif %} {% endif %} {{ entry.hostname or '–' | safe }}
{% else %} {{ empty_state('Keine Lizenzen', '', 'shield') }} {% endif %}
{% if reported.customers %}
{{ icon('share', size=17) }} Von diesem Lizenzserver verwaltete Kunden
Gemeldeter Bestand · Quelle {{ reported.source_license_id[:12] }}… {% if reported.last_reported_at %} · {{ reported.last_reported_at | dt }} {% endif %}
{{ alert('Diese Daten verwaltet der Sub-Lizenzserver selbst. Sie sind hier rein informativ und werden bei jedem Bericht vollstaendig ersetzt.', 'info') }} {% for entry in reported.customers %}
{{ entry.name }}
{{ entry.city or 'ohne Ort' }} · {{ entry.tickets | length }} Ticket(s)
{{ icon('chevron-down', size=15) }}
{% for ticket in entry.tickets %}
{{ ticket.remote_ref[:12] }}… {{ ticket.type }} {% if ticket.status == 'blocked' %}{{ pill('gesperrt', 'danger') }} {% else %}{{ pill('offen', 'online') }}{% endif %}
{% for entry_license in ticket.licenses %}
{{ entry_license.remote_ref[:12] }}… {{ entry_license.status }} {% if entry_license.lifetime %}{{ pill('unbefristet', 'online') }} {% elif entry_license.days_left is not none %} {{ pill(entry_license.days_left ~ ' Tage', 'danger' if entry_license.color == 'red' else ('warning' if entry_license.color == 'orange' else 'online')) }} {% endif %} {{ entry_license.hostname or '' }}
{% endfor %}
{% endfor %}
{% endfor %}
{% endif %}
{{ icon('building', size=17) }} Stammdaten
{{ field('name', 'Firmenname', value=customer.name, required=True, disabled=not current_user.has('customers.edit')) }} {{ field('contact_email', 'E-Mail', value=customer.contact_email, type='email', disabled=not current_user.has('customers.edit')) }} {{ field('contact_person', 'Ansprechpartner', value=customer.contact_person, disabled=not current_user.has('customers.edit')) }} {{ field('contact_phone', 'Telefon', value=customer.contact_phone, disabled=not current_user.has('customers.edit')) }}
{{ field('street', 'Strasse', value=customer.street, disabled=not current_user.has('customers.edit')) }} {{ field('house_number', 'Nr.', value=customer.house_number, disabled=not current_user.has('customers.edit')) }} {{ field('postal_code', 'PLZ', value=customer.postal_code, disabled=not current_user.has('customers.edit')) }} {{ field('city', 'Ort', value=customer.city, disabled=not current_user.has('customers.edit')) }}
{{ textarea_field('notes', 'Notizen', value=customer.notes, rows=3, extra_class='field--full') }}
Angelegt
{{ customer.created_at | dt }} von {{ customer.created_by or '-' }}
Geaendert
{{ customer.updated_at | dt }}
Portal-Zugang
{{ portal_url }}
{% if current_user.has('customers.edit') %} {% endif %}
{% endblock %}