aufträge und „Alle aktualisieren“: beendete lassen sich ausblenden

User 25.09.: Die Karten waren „immer da“ und ließen sich weder bestätigen noch
wegklicken. Beendete Aufträge der KI-Box und das letzte „Alle aktualisieren“
im Homelab haben jetzt einen Knopf „Ausblenden“ (quittiert wird auf dem Server,
gilt also auf allen Geräten; das Protokoll behält alles).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-09-25 12:54:21 +02:00
co-authored by Claude Opus 5.5
parent 0df593c05a
commit 54a3649d5e
39 changed files with 172 additions and 42 deletions
+11
View File
@@ -386,3 +386,14 @@ def test_schnittstellen(homelab):
fertig = c.get("/api/homelab/sammellauf").json()["sammellauf"]
assert fertig["status"] == "fertig" and fertig["id"] == antwort.json()["sammellauf"]["id"]
assert "meldung" not in fertig and "dringend" not in fertig
def test_quittiert_verschwindet_von_der_update_seite(homelab):
"""25.09.2026: Das fertige „Alle aktualisieren“ ließ sich nicht wegklicken."""
antwort = sammellauf.starten()
assert sammellauf.quittieren(antwort["sammellauf"]["id"]) is False # läuft noch
sl = _auf_ende()
assert sammellauf.aktueller()["id"] == sl["id"]
assert sammellauf.quittieren(sl["id"]) is True
assert sammellauf.aktueller() is None
assert sammellauf.liste()[0]["quittiert"] is True # das Protokoll behält ihn
+13
View File
@@ -194,3 +194,16 @@ def test_systemd_start_scheitert_sauber(motor, monkeypatch):
def test_zeilen_aus_ueberschreibt_mit_wagenruecklauf():
assert jobengine.zeilen_aus("a\n 1%\r 50%\r100%\nb\r\n") == ["a", "100%", "b"]
assert jobengine.zeilen_aus("läuft\r 7%") == [" 7%"]
def test_quittieren_nur_wenn_beendet(motor):
"""25.09.2026: Beendete Aufträge standen 24 Stunden auf der Update-Seite, ohne dass man sie wegklicken konnte."""
job_id = jobengine.start_job([PY, "-c", "import time; time.sleep(30)"], "Lang")
time.sleep(0.2)
assert jobengine.quittieren(job_id) is False # läuft noch
jobengine.cancel_job(job_id)
_warte(job_id)
assert jobengine.quittieren(job_id) is True and _oeffentlich(job_id)["quittiert"] is True
akte = json.loads((motor / f"{job_id}.json").read_text(encoding="utf-8"))
assert akte["quittiert"] is True
assert jobengine.quittieren("gibt-es-nicht") is False