Dashboard - redundante Informationen entfernt

Dieser Commit ist enthalten in:
2025-06-08 00:43:29 +02:00
Ursprung 6bcc388b07
Commit 1b324bbd58
3 geänderte Dateien mit 53 neuen und 16 gelöschten Zeilen

Datei anzeigen

@@ -877,6 +877,13 @@ def dashboard():
""")
expired_licenses = cur.fetchone()[0]
# Deaktivierte Lizenzen
cur.execute("""
SELECT COUNT(*) FROM licenses
WHERE is_active = FALSE
""")
inactive_licenses = cur.fetchone()[0]
# Lizenzen die in den nächsten 30 Tagen ablaufen
cur.execute("""
SELECT COUNT(*) FROM licenses
@@ -898,6 +905,7 @@ def dashboard():
cur.execute("""
SELECT l.id, l.license_key, c.name, l.valid_until,
CASE
WHEN l.is_active = FALSE THEN 'deaktiviert'
WHEN l.valid_until < CURRENT_DATE THEN 'abgelaufen'
WHEN l.valid_until < CURRENT_DATE + INTERVAL '30 days' THEN 'läuft bald ab'
ELSE 'aktiv'
@@ -990,6 +998,7 @@ def dashboard():
'total_licenses': total_licenses,
'active_licenses': active_licenses,
'expired_licenses': expired_licenses,
'inactive_licenses': inactive_licenses,
'expiring_soon': expiring_soon,
'full_licenses': license_types.get('full', 0),
'test_licenses': license_types.get('test', 0),
@@ -1319,6 +1328,7 @@ def licenses():
SELECT l.id, l.license_key, c.name, c.email, l.license_type,
l.valid_from, l.valid_until, l.is_active,
CASE
WHEN l.is_active = FALSE THEN 'deaktiviert'
WHEN l.valid_until < CURRENT_DATE THEN 'abgelaufen'
WHEN l.valid_until < CURRENT_DATE + INTERVAL '30 days' THEN 'läuft bald ab'
ELSE 'aktiv'
@@ -1732,6 +1742,7 @@ def export_licenses():
SELECT l.id, l.license_key, c.name as customer_name, c.email as customer_email,
l.license_type, l.valid_from, l.valid_until, l.is_active,
CASE
WHEN l.is_active = FALSE THEN 'Deaktiviert'
WHEN l.valid_until < CURRENT_DATE THEN 'Abgelaufen'
WHEN l.valid_until < CURRENT_DATE + INTERVAL '30 days' THEN 'Läuft bald ab'
ELSE 'Aktiv'

Datei anzeigen

@@ -13,6 +13,7 @@
.status-aktiv { color: #28a745; }
.status-ablaufend { color: #ffc107; }
.status-abgelaufen { color: #dc3545; }
.status-deaktiviert { color: #6c757d; }
</style>
{% endblock %}
@@ -33,7 +34,7 @@
<!-- Statistik-Karten -->
<div class="row g-3 mb-4">
<div class="col-md-3">
<div class="col-md-4">
<div class="card stat-card h-100">
<div class="card-body text-center">
<h5 class="card-title">👥 Kunden</h5>
@@ -42,7 +43,7 @@
</div>
</div>
</div>
<div class="col-md-3">
<div class="col-md-4">
<div class="card stat-card h-100">
<div class="card-body text-center">
<h5 class="card-title">📋 Lizenzen</h5>
@@ -51,16 +52,7 @@
</div>
</div>
</div>
<div class="col-md-3">
<div class="card stat-card h-100">
<div class="card-body text-center">
<h5 class="card-title">✅ Aktiv</h5>
<h2 class="text-success">{{ stats.active_licenses }}</h2>
<p class="text-muted mb-0">Gültige Lizenzen</p>
</div>
</div>
</div>
<div class="col-md-3">
<div class="col-md-4">
<div class="card stat-card h-100">
<div class="card-body text-center">
<h5 class="card-title">🟢 Sessions</h5>
@@ -95,14 +87,18 @@
<div class="card-body">
<h5 class="card-title">Lizenzstatus</h5>
<div class="row">
<div class="col-6 text-center">
<div class="col-4 text-center">
<h3 class="text-success">{{ stats.active_licenses }}</h3>
<p class="text-muted">Aktiv</p>
</div>
<div class="col-6 text-center">
<div class="col-4 text-center">
<h3 class="text-danger">{{ stats.expired_licenses }}</h3>
<p class="text-muted">Abgelaufen</p>
</div>
<div class="col-4 text-center">
<h3 class="text-secondary">{{ stats.inactive_licenses }}</h3>
<p class="text-muted">Deaktiviert</p>
</div>
</div>
</div>
</div>
@@ -273,7 +269,9 @@
<td>{{ license[2] }}</td>
<td><small><code>{{ license[1][:8] }}...</code></small></td>
<td>
{% if license[4] == 'abgelaufen' %}
{% if license[4] == 'deaktiviert' %}
<span class="status-deaktiviert">🚫 Deaktiviert</span>
{% elif license[4] == 'abgelaufen' %}
<span class="status-abgelaufen">⚠️ Abgelaufen</span>
{% elif license[4] == 'läuft bald ab' %}
<span class="status-ablaufend">⏰ Läuft bald ab</span>