from flask import Flask, request, session
from html import escape
import sqlite3
import time
app = Flask(__name__)
app.secret_key = "stadion-escape-secret"
STYLE = """
Glück Auf Stadion Escape
"""
HTML_END = """
"""
def get_db():
db = sqlite3.connect("adventure.db")
db.row_factory = sqlite3.Row
return db
def seite_html(inhalt, klasse="puzzle"):
return STYLE + '' + inhalt + "" + HTML_END
def highscore_html(db):
eintraege = db.execute(
"""
SELECT name, fertig_zeit - start_zeit AS dauer
FROM spieler
WHERE fertig_zeit IS NOT NULL
ORDER BY dauer
LIMIT 10
"""
).fetchall()
if not eintraege:
return ""
html = '
',
"scene",
)
@app.route("/raum/", methods=["GET", "POST"])
@app.route("/app/raum/", methods=["GET", "POST"])
def raum(raum_id):
db = get_db()
r = db.execute("SELECT * FROM raeume WHERE id=?", (raum_id,)).fetchone()
if r is None:
db.close()
return seite_html(
'
Raum nicht gefunden
Zurück zum Start'
), 404
if r["raetsel_frage"]:
if request.method == "POST":
antwort = request.form["antwort"].strip().lower()
richtige_antwort = r["raetsel_antwort"].strip().lower()
db.close()
if antwort == richtige_antwort:
db = get_db()
spieler_id = session.get("spieler_id")
if spieler_id:
db.execute(
"UPDATE spieler SET fertig_zeit=? WHERE id=? AND fertig_zeit IS NULL",
(time.time(), spieler_id),
)
db.commit()
html = (
"
Geschafft!
"
"
Die Nordkurve feiert mit dir, "
+ escape(session.get("spieler_name", "Fan"))
+ ".