kundenplattform/templates/geraete_hardware.html
Thomas Stallinger dd12dd7b74 feat: Aktionen-Spalte in der Geräteliste (/geraete)
Hardware-Informationen, Installations-/Aktions-Log, De-/Reprovisionieren,
Gerät löschen (Soft Delete, mit Bestätigungsseite) - via Pico-Dropdown,
kein zusätzliches JS. Spricht die neuen anode-Endpunkte aus
provisioning-server an.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 13:04:58 +02:00

78 lines
3.4 KiB
HTML

{% extends "base.html" %}
{% block title %}Hardware {{ device.hostname or device.device_fingerprint }} — Tuxflotte{% endblock %}
{% block content %}
<p><a href="/geraete">← Geräteliste</a></p>
<h2>Hardware-Informationen: {{ device.hostname or device.device_fingerprint }}</h2>
{% if fehler %}
<p><mark>{{ fehler }}</mark></p>
{% elif not hardware %}
<p>Für dieses Gerät liegt noch kein Hardware-Snapshot vor (Gerät wurde noch nicht aktiviert).</p>
{% else %}
<section>
<h3>System</h3>
<figure>
<table>
<tbody>
<tr><td>Hersteller</td><td>{{ hardware.manufacturer or "—" }}</td></tr>
<tr><td>Produkt</td><td>{{ hardware.product_name or "—" }} {{ hardware.product_version or "" }}</td></tr>
<tr><td>Architektur</td><td>{{ hardware.architecture }}</td></tr>
<tr><td>System-UUID</td><td><code>{{ hardware.system_uuid or "—" }}</code></td></tr>
<tr><td>Seriennummer</td><td><code>{{ hardware.system_serial or "—" }}</code></td></tr>
<tr><td>CPU</td><td>{{ hardware.cpu_model or "—" }} ({{ hardware.cpu_logical_count or "?" }} Logikkerne)</td></tr>
<tr><td>Arbeitsspeicher</td><td>{{ (hardware.memory_bytes / (1024**3)) | round(1) if hardware.memory_bytes else "—" }} GB</td></tr>
<tr><td>Mainboard</td><td>{{ hardware.board_vendor or "—" }} {{ hardware.board_name or "" }}</td></tr>
<tr><td>BIOS</td><td>{{ hardware.bios_vendor or "—" }} {{ hardware.bios_version or "" }}</td></tr>
<tr><td>Boot-Modus</td><td>{{ hardware.boot_mode or "—" }}</td></tr>
<tr><td>Secure Boot</td><td>{{ hardware.secure_boot or "—" }}</td></tr>
<tr><td>TPM</td><td>{{ hardware.tpm_version or "—" }}</td></tr>
<tr><td>Erfasst am</td><td>{{ hardware.collected_at }}</td></tr>
</tbody>
</table>
</figure>
</section>
<section>
<h3>Netzwerk-Interfaces</h3>
{% if not hardware.network_interfaces %}
<p>Keine erfasst.</p>
{% else %}
<figure>
<table>
<thead><tr><th>Name</th><th>Typ</th><th>MAC-Adresse</th></tr></thead>
<tbody>
{% for interface in hardware.network_interfaces %}
<tr><td>{{ interface.name }}</td><td>{{ interface.type }}</td><td><code>{{ interface.mac_address }}</code></td></tr>
{% endfor %}
</tbody>
</table>
</figure>
{% endif %}
</section>
<section>
<h3>Datenträger</h3>
{% if not hardware.storage_devices %}
<p>Keine erfasst.</p>
{% else %}
<figure>
<table>
<thead><tr><th>Name</th><th>Modell</th><th>Seriennummer</th><th>Größe</th><th>Transport</th></tr></thead>
<tbody>
{% for storage in hardware.storage_devices %}
<tr>
<td>{{ storage.name }}</td>
<td>{{ storage.model or "—" }}</td>
<td><code>{{ storage.serial or "—" }}</code></td>
<td>{{ (storage.size_bytes / (1024**3)) | round(1) }} GB</td>
<td>{{ storage.transport or "—" }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</figure>
{% endif %}
</section>
{% endif %}
{% endblock %}