{% extends "base.html" %} {% block title %}Drucker{% endblock %} {% block content %}

Drucker

Meine Reservierungen

Aktueller Stand unserer 4 Bambu-Lab-Drucker. Kein Drucken ohne Reservierung — es muss immer klar sein, wer gerade an welchem Drucker druckt.

{% if not darf_reservieren %}
Reservierung noch nicht freigeschaltet. Du kannst die Drucker bisher nur ansehen. Lass dich beim Lehrer freischalten, dann kannst du selbst Slots reservieren.
{% endif %} {% set gesperrte = drucker_liste | selectattr('freigegeben', 'equalto', 0) | list %} {% if gesperrte %}
⚠ {{ gesperrte|length }} Drucker derzeit gesperrt: {{ gesperrte | map(attribute='name') | join(', ') }} — Details auf den jeweiligen Kacheln.
{% endif %}
{% for d in drucker_liste %}

{{ d.name }}

{{ d.modell }}{% if not d.geschlossenes_gehaeuse %} · offen{% endif %}
{# Sperre-Banner hat Vorrang vor allem anderen #} {% if not d.freigegeben %}
Gesperrt{% if d.gesperrt_grund %} — {{ d.gesperrt_grund }}{% endif %}
Reservierung derzeit nicht moeglich.
{% endif %} {# Status-Zeile #}
{% if d.status == 'printing' %}🟢 druckt {% elif d.status == 'idle' %}⚪ frei {% elif d.status == 'paused' %}🟡 pausiert {% elif d.status == 'finished' %}✅ fertig — Druck abholen {% elif d.status == 'failed' %}🔴 Fehler {% elif d.status == 'offline' %}⚫ offline {% else %}⚪ kein Status {% endif %}
{# Job-Details wenn aktiv #} {% if d.job_name %}
{{ d.job_name }}
{% endif %} {% if d.progress_pct %}
{{ d.progress_pct|round|int }} %{% if d.restzeit_min %} · noch {{ d.restzeit_min }} min{% endif %}
{% endif %} {% if d.fehlermeldung %}
{{ d.fehlermeldung }}
{% endif %} {# Notiz vom Lehrer (auch wenn nicht gesperrt) #} {% if d.notiz and d.freigegeben %}
ℹ️ {{ d.notiz }}
{% endif %} {# Hinweis wenn noch keine API-Daten #} {% if not d.status %}
(Live-Status via Bambu-API kommt mit Etappe 5. Bis dahin pflegt der Lehrer den Status manuell.)
{% elif d.manuell_gesetzt %}
vom Lehrer gesetzt
{% endif %} {# Belegung: aktuell + naechste 3 Slots #}
{% if d.belegung %}
🔖 Jetzt belegt: {{ tier_emoji(d.belegung.tier or '') }} {{ d.belegung.vorname or '—' }} bis {{ d.belegung.ende_zeit|iso_format('%H:%M') }} Uhr
{% else %}
🔖 Aktuell frei.
{% endif %} {% if d.kommend %}
Naechste: {% for s in d.kommend %} {{ s.start_zeit|iso_format('%d.%m. %H:%M') }}–{{ s.ende_zeit|iso_format('%H:%M') }} ({{ s.vorname or '—' }}){% if not loop.last %}, {% endif %} {% endfor %}
{% endif %}
{# Reservieren-Button #} {% if d.freigegeben and darf_reservieren %} + Diesen Drucker reservieren {% elif d.freigegeben and not darf_reservieren %}
Reservierung ist fuer dich noch nicht freigeschaltet.
{% endif %} {# Manual + Troubleshooting #}
{% endfor %}
{% if not drucker_liste %}

Noch keine Drucker eingerichtet.

{% endif %} {% endblock %}