Teil 22: Aufgaben zurücksetzen – von „erledigt“ auf „offen“


🎯 Ziel dieses Teils

✅ Jede erledigte Aufgabe bekommt einen „Zurücksetzen“-Button
✅ Beim Klick wird erledigt = False gesetzt
✅ Die Änderung wird sofort gespeichert
✅ Alles passiert im Browser, ohne Neuladen per Hand


Schritt 1: Neue Route in app.py

Füge in deiner app.py diese neue Route hinzu:

@app.route("/zuruecksetzen/<int:index>")
def aufgabe_zuruecksetzen(index):
    if 0 <= index < len(aufgaben):
        aufgaben[index]["erledigt"] = False
        aufgaben_speichern()
    return redirect(url_for("startseite"))

Schritt 2: Button in index.html

Bearbeite den Teil mit if aufgabe.erledigt
und füge bei erledigten Aufgaben einen „Zurück“-Button hinzu:

{% if aufgabe.erledigt %}
    ✅ <s>{{ aufgabe.text }}</s>
    <a href="/zuruecksetzen/{{ loop.index0 }}">
        <button>🔁 Zurücksetzen</button>
    </a>
{% else %}
    ⬜ {{ aufgabe.text }}
    <a href="/erledigt/{{ loop.index0 }}">
        <button>✅ Erledigt</button>
    </a>
{% endif %}
<a href="/loeschen/{{ loop.index0 }}">
    <button>❌ Löschen</button>
</a>

Beispiel-Ausgabe im Browser

Wenn eine Aufgabe erledigt ist, sieht sie nun z. B. so aus:

✅ ~Python lernen~  🔁 Zurücksetzen ❌ Löschen

Wenn sie offen ist:

Python lernen  ✅ Erledigt ❌ Löschen

Was du jetzt kannst

FunktionWie gemacht?
Aufgabe „reaktivieren“erledigt = False
Neue Route /zuruecksetzen/x@app.route(...)
Direktes Updateaufgaben_speichern() + redirect
Button nur bei erledigt{% if aufgabe.erledigt %}

Was du gelernt hast

  • Zwei-Wege-Status: offen ↔ erledigt
  • Aufgaben logisch umschalten
  • Routen flexibel erweitern
  • HTML & Python logisch verbinden

Bonus-Ideen

  • 🟢 Verwende nur einen Button: „Status wechseln“
  • ⚠️ Zeige eine Bestätigung beim Zurücksetzen
  • 🧠 Zeige die letzte Änderung (Zeitstempel)

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert