Kundenportal:
- Neue Seite /struktur - OE-Baum (rekursives Jinja-Makro), Anlegen/
Umbenennen/Löschen (Standard-OE 'Neue Geräte' geschützt), Merkmale-
Editor pro OE mit Tristate aktiv/inaktiv/nicht festgelegt.
- geraete_liste.html: neue Spalte 'OE', Aktionen-Dropdown um 'In OE
verschieben' erweitert.
- auftragskatalog.html: zeigt jetzt die Herkunft einer Einstellung an
(OE/Gruppe/manuell), sofern sie nicht vom Workspace-Default kommt.
Admin (/admin/kunden/{id}):
- Neue Sektion 'Gruppen' - Anlegen/Löschen, verlinkt auf neue
Detailseite (admin/gruppe_detail.html) mit Merkmale-Editor (wie OE)
und Geräte-Mitgliedschaft-Checkliste. Bewusst nur intern verwaltbar
in v1 (siehe Konfigurationsgruppen-Diskussion).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
55 lines
1.9 KiB
HTML
55 lines
1.9 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Struktur — Tuxflotte{% endblock %}
|
|
{% block content %}
|
|
<h2>Struktur</h2>
|
|
<p>Organisationseinheiten (OEs) zum Verorten Ihrer Geräte — z.B. Gebäude oder Klassen. Ein Gerät gehört immer zu genau einer OE, neu aktivierte Geräte landen automatisch in "Neue Geräte".</p>
|
|
|
|
{% macro knoten(oe, oes) %}
|
|
<li>
|
|
<strong>{{ oe.name }}</strong>{% if oe.ist_standard %} <small>(Standard)</small>{% endif %}
|
|
<small>
|
|
· <a href="/struktur/{{ oe.id }}/merkmale">Merkmale bearbeiten</a>
|
|
{% if not oe.ist_standard %}
|
|
· <a href="/struktur/{{ oe.id }}/umbenennen">Umbenennen</a>
|
|
· <a href="/struktur/{{ oe.id }}/loeschen">Löschen</a>
|
|
{% endif %}
|
|
</small>
|
|
<details>
|
|
<summary role="button" class="secondary outline">Unter-OE anlegen</summary>
|
|
<form method="post" action="/struktur">
|
|
<input type="hidden" name="parent_id" value="{{ oe.id }}">
|
|
<input type="text" name="name" placeholder="Name" required>
|
|
<button type="submit">Anlegen</button>
|
|
</form>
|
|
</details>
|
|
{% set kinder = oes | selectattr("parent_id", "equalto", oe.id) | list %}
|
|
{% if kinder %}
|
|
<ul>
|
|
{% for kind in kinder %}
|
|
{{ knoten(kind, oes) }}
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
</li>
|
|
{% endmacro %}
|
|
|
|
{% set wurzeln = organisationseinheiten | selectattr("parent_id", "equalto", none) | list %}
|
|
{% if not wurzeln %}
|
|
<p>Keine OEs gefunden.</p>
|
|
{% else %}
|
|
<ul>
|
|
{% for wurzel in wurzeln %}
|
|
{{ knoten(wurzel, organisationseinheiten) }}
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
|
|
<details>
|
|
<summary role="button" class="secondary outline">Neue OE auf oberster Ebene anlegen</summary>
|
|
<form method="post" action="/struktur">
|
|
<input type="text" name="name" placeholder="Name" required>
|
|
<button type="submit">Anlegen</button>
|
|
</form>
|
|
</details>
|
|
{% endblock %}
|