Neuer, von provisioning-server (anode) getrennter Dienst, siehe ADR-0011: FastAPI + Jinja2, eigene Postgres-DB (benutzer-Tabelle), eigenes Service-Token (TUXFLOTTE_KUNDENPLATTFORM_TOKEN) für die Kommunikation mit anode. Org-Zugehörigkeits-Prüfung passiert hier in der Anwendung vor jedem Aufruf gegen anode. Umfang v1: Login, Geräteliste, Auftragskatalog geräteweise aus-/abwählen (inkl. der standardbrowser-Option für Brave). systemd-Unit läuft unter eigenem unprivilegiertem System-User statt root. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
50 lines
2.2 KiB
HTML
50 lines
2.2 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Auftragskatalog {{ device.hostname or device.device_fingerprint }} — Tuxflotte{% endblock %}
|
|
{% block content %}
|
|
<p><a href="/geraete">← Geräteliste</a></p>
|
|
<h2>Auftragskatalog: {{ device.hostname or device.device_fingerprint }}</h2>
|
|
|
|
{% if fehler %}
|
|
<p class="fehler">{{ fehler }}</p>
|
|
{% else %}
|
|
{% for kategorie_name, eintraege in kategorien.items() %}
|
|
<div class="kategorie">
|
|
<h2>{{ kategorie_name }}</h2>
|
|
<table>
|
|
<tbody>
|
|
{% for eintrag in eintraege %}
|
|
<tr>
|
|
<td>
|
|
<strong>{{ eintrag.name }}</strong>
|
|
{% if eintrag.description %}<br><small>{{ eintrag.description }}</small>{% endif %}
|
|
</td>
|
|
<td class="state-{{ eintrag.state }}">
|
|
{{ "ausgewählt" if eintrag.state == "present" else "nicht ausgewählt" }}
|
|
</td>
|
|
<td>
|
|
{% if eintrag.state == "present" %}
|
|
<form class="inline" method="post" action="/geraete/{{ device.id }}/auftragskatalog/{{ eintrag.merkmal }}/deselect">
|
|
<button type="submit">Abwählen</button>
|
|
</form>
|
|
{% else %}
|
|
<form class="inline" method="post" action="/geraete/{{ device.id }}/auftragskatalog/{{ eintrag.merkmal }}/select">
|
|
{% if optionen_felder.get(eintrag.merkmal) %}
|
|
<div class="optionen">
|
|
{% for feld in optionen_felder[eintrag.merkmal] %}
|
|
<label><input type="checkbox" name="optionen.{{ feld.key }}"> {{ feld.label }}</label>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
<button type="submit">Auswählen</button>
|
|
</form>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endblock %}
|