diff --git a/app/app.py b/app/app.py index e37c9c8..226a1a2 100644 --- a/app/app.py +++ b/app/app.py @@ -1,4 +1,4 @@ -from flask import Flask, request, session, redirect, url_for, abort +from flask import Flask, request, session, redirect import sqlite3 app = Flask(__name__) @@ -11,11 +11,8 @@ def get_db(): @app.route("/", methods=["GET", "POST"]) def start(): - html = '

Verlies

' - if request.method == "POST": # Formular abgeschickt? - # .get() verhindert Abstürze, falls "name" mal fehlt - name = request.form.get("name", "").strip() + name = request.form["name"].strip() if name != "": session["spieler"] = name # App merkt sich: das bist du db = get_db() @@ -25,75 +22,36 @@ def start(): ) db.commit() db.close() - # url_for generiert den Pfad dynamisch (sehr viel sicherer!) - return redirect(url_for("raum", id=1)) + return redirect("/app/raum/1") - # Wenn kein POST gesendet wurde, läuft der Code hier einfach weiter: - if "spieler" in session: - db = get_db() - s = db.execute( - "SELECT raum_id FROM spielstand WHERE spieler=?", - (session["spieler"],) - ).fetchone() - db.close() - if s: - # Dynamische URL-Generierung auch hier für den Weiterspielen-Link - weiterspielen_url = url_for("raum", id=s["raum_id"]) - html = html + '

Willkommen zurück, ' + session["spieler"] + '!

' \ - + 'Weiterspielen
' - - # Jetzt existiert 'html' garantiert immer - return html + '
Dein Name: ' \ - + '
' - + return '

Verlies

' \ + + '
Dein Name: ' \ + + '
' @app.route("/raum/", methods=["GET", "POST"]) def raum(id): db = get_db() + r = db.execute("SELECT * FROM raeume WHERE id=?", (id,)).fetchone() - if "spieler" in session: # angemeldet? - db.execute( - "UPDATE spielstand SET raum_id=? WHERE spieler=?", - (id, session["spieler"]) - ) - db.commit() - - # Raum aus der DB holen - r = db.execute("SELECT * FROM r_aeume WHERE id=?", (id,)).fetchone() - - # Fehlerbehandlung: Was, wenn die ID nicht existiert? - if r is None: - db.close() - abort(404, description="Dieser Raum existiert nicht!") - - # Rätselraum? - if r["raetsel_frage"]: + if r["raetsel_frage"]: # Rätselraum? if request.method == "POST": - user_antwort = request.form.get("antwort", "").strip() - if user_antwort == r["raetsel_antwort"]: - db.close() # DB schließen vor dem Return! + if request.form["antwort"].strip() == r["raetsel_antwort"]: return "

Befreit!

" - - db.close() # DB schließen vor dem Return! - nochmal_url = url_for("raum", id=id) - return 'Leider falsch. nochmal' - - db.close() # DB schließen vor dem Return! + return 'Leider falsch. nochmal' return "

" + r["name"] + "

" + r["beschreibung"] + "

" \ + '
' + r["raetsel_frage"] \ + '
' - # Sonst: normaler Raum mit Ausgängen + # sonst: normaler Raum mit Ausgängen (wie bisher) ausgaenge = db.execute("SELECT richtung, nach_raum FROM ausgaenge WHERE von_raum=?", (id,)).fetchall() - db.close() # DB schließen für den normalen Pfad + db.close() html = "

" + r["name"] + "

" html = html + "

" + r["beschreibung"] + "

" for a in ausgaenge: - nach_raum_url = url_for("raum", id=a["nach_raum"]) - html = html + '' \ + html = html + '' \ + a["richtung"] + '   ' - - return html # Das hat gefehlt! + return html + if __name__ == "__main__": app.run(host="0.0.0.0", port=9011) \ No newline at end of file