Files
ksef_app/app/templates/admin/maintenance.html
Mateusz Gruszczyński 35571df778 push
2026-03-13 11:03:13 +01:00

80 lines
3.8 KiB
HTML

{% extends 'admin/admin_base.html' %}
{% block title %}<i class="fa-solid fa-toolbox me-2 text-primary"></i>Narzędzia administracyjne{% endblock %}
{% block admin_content %}
<div class="d-flex justify-content-between align-items-start flex-wrap gap-3 mb-4">
<div>
<h4 class="mb-1">Logi i backupy</h4>
<div class="text-secondary">Podstrona administracyjna do porządków technicznych, kopii bazy i operacji pomocniczych.</div>
</div>
</div>
<div class="row g-3 mb-4">
<div class="col-lg-4">
<div class="card shadow-sm border-0 h-100">
<div class="card-body">
<div class="small text-secondary mb-2">Baza danych</div>
<h5 class="mb-3">Kopia bazy</h5>
<div class="small text-secondary mb-1">Silnik</div>
<div class="mb-3">{{ backup_meta.engine }}</div>
<div class="small text-secondary mb-1">Katalog backupów</div>
<div class="small text-break mb-3">{{ backup_meta.backup_dir }}</div>
<div class="alert alert-{{ 'success' if backup_meta.sqlite_supported else 'warning' }} py-2 mb-3">
{% if backup_meta.sqlite_supported %}
Kopia z panelu działa bezpośrednio dla SQLite.
{% else %}
Kopia z panelu nie wykonuje natywnego dumpa dla tego silnika.
{% endif %}
</div>
{% if backup_meta.sqlite_path %}
<div class="small text-secondary mb-1">Plik SQLite</div>
<div class="small text-break mb-3">{{ backup_meta.sqlite_path }}</div>
{% endif %}
<ul class="small text-secondary ps-3 mb-3">
{% for note in backup_meta.notes %}
<li>{{ note }}</li>
{% endfor %}
</ul>
<form method="post" action="{{ url_for('admin.database_backup') }}">
{{ backup_form.hidden_tag() }}
{{ backup_form.submit(class='btn btn-primary w-100') }}
</form>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card shadow-sm border-0 h-100">
<div class="card-body">
<div class="small text-secondary mb-2">Porządki techniczne</div>
<h5 class="mb-3">Czyszczenie starych logów</h5>
<div class="text-secondary small mb-3">Usuwa rekordy logów i stare rotowane pliki `.log.*` starsze niż wskazana liczba dni.</div>
<form method="post" action="{{ url_for('admin.cleanup_logs') }}">
{{ cleanup_form.hidden_tag() }}
<div class="mb-3">
{{ cleanup_form.days.label(class='form-label') }}
{{ cleanup_form.days(class='form-control') }}
</div>
{{ cleanup_form.submit(class='btn btn-outline-danger w-100') }}
</form>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card shadow-sm border-0 h-100">
<div class="card-body">
<div class="small text-secondary mb-2">Szybkie informacje</div>
<h5 class="mb-3">Podsumowanie</h5>
<div class="d-flex justify-content-between border-bottom py-2 small"><span>Użytkownicy</span><strong>{{ users }}</strong></div>
<div class="d-flex justify-content-between border-bottom py-2 small"><span>Firmy</span><strong>{{ companies }}</strong></div>
<div class="d-flex justify-content-between border-bottom py-2 small"><span>Logi audytu</span><strong>{{ audits }}</strong></div>
<div class="d-flex justify-content-between border-bottom py-2 small"><span>Mock aktywny</span><strong>{{ mock_enabled }}</strong></div>
<div class="d-flex justify-content-between py-2 small"><span>Tryb R/O</span><strong>{{ 'ON' if global_ro else 'OFF' }}</strong></div>
<hr>
<div class="small text-secondary">Przy bazach innych niż SQLite przycisk backupu zapisze plik informacyjny, a właściwą kopię należy wykonać narzędziem serwera bazy.</div>
</div>
</div>
</div>
</div>
{% endblock %}