Backup-Funktionalität
Dieser Commit ist enthalten in:
@@ -36,6 +36,7 @@
|
||||
<a href="/customers" class="btn btn-secondary">👥 Kunden</a>
|
||||
<a href="/sessions" class="btn btn-secondary">🟢 Sessions</a>
|
||||
<a href="/audit" class="btn btn-secondary">📋 Audit</a>
|
||||
<a href="/backups" class="btn btn-secondary">💾 Backups</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -117,6 +118,42 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Backup-Status -->
|
||||
<div class="row g-3 mb-4">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">💾 Backup-Status</h5>
|
||||
{% if stats.last_backup %}
|
||||
{% if stats.last_backup[4] == 'success' %}
|
||||
<p class="mb-1">
|
||||
<strong>Letztes Backup:</strong>
|
||||
<span class="text-success">✅ Erfolgreich</span>
|
||||
am {{ stats.last_backup[0].strftime('%d.%m.%Y %H:%M:%S') }}
|
||||
</p>
|
||||
<p class="mb-0">
|
||||
<small class="text-muted">
|
||||
Größe: {{ (stats.last_backup[1] / 1024 / 1024)|round(2) }} MB |
|
||||
Dauer: {{ stats.last_backup[2]|round(1) }} Sekunden |
|
||||
Typ: {{ 'Manuell' if stats.last_backup[3] == 'manual' else 'Automatisch' }}
|
||||
</small>
|
||||
</p>
|
||||
{% else %}
|
||||
<p class="mb-0">
|
||||
<strong>Letztes Backup:</strong>
|
||||
<span class="text-danger">❌ Fehlgeschlagen</span>
|
||||
am {{ stats.last_backup[0].strftime('%d.%m.%Y %H:%M:%S') }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<p class="text-muted mb-0">Noch kein Backup vorhanden</p>
|
||||
{% endif %}
|
||||
<a href="/backups" class="btn btn-sm btn-outline-primary mt-2">Backup-Verwaltung →</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-3">
|
||||
<!-- Bald ablaufende Lizenzen -->
|
||||
<div class="col-md-6">
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren