from app import app from app.forms import LoginForm from app.controller import Session from flask import ( render_template, request, url_for, Response, flash, redirect, get_template_attribute, ) from flask import render_template_string as render_string g = Session() @app.route("/", methods=["GET"]) def home(): return render_template("index.j2", url_for=url_for) @app.route("/login", methods=["GET", "POST"]) def login(): form = LoginForm() if form.validate_on_submit(): flash(f"User {form.username} is requesting to login.") return redirect("/") return render_template("login.j2", form=form) @app.route("/control", methods=["GET"]) def get_controls(): return render_template("controls.j2", courts=g.courts.all()) @app.route("/propose", methods=["POST"]) def get_random_games(): g.levels = int(request.form["levels"].split()[0]) g.teams = request.form["team"] == "Teams" return render_template("games.j2", games=g.propose(), title="Proposal") @app.route("/confirm", methods=["POST"]) def confirm_games(): return render_template("games.j2", games=g.confirm(), title=f"Round: {g.round()}") @app.route("/clear", methods=["POST"]) def clear_games(): return render_template("games.j2", games=g.all(), title=f"Round: {g.round()}") @app.route("/reset", methods=["POST"]) def reset_games(): return render_template("games.j2", games=g.reset(), title=f"Round: {g.round()}") @app.route("/player-toggle/", methods=["POST"]) def toggle_player(player_request): id = int(player_request) player = g.players.toggle(id) button = get_template_attribute("macros.j2", "player_button") return render_string("{{button(player)}}", player=player, button=button) @app.route("/players", methods=["GET"]) def get_list_of_players(): regulars, guests = g.players.all() return render_template( "players.j2", regulars=regulars, guests=guests, url_for=url_for ) @app.route("/reset_players", methods=["POST"]) def reset_all_players(): g.players.reset() response = Response("Players reset!") response.headers["HX-Refresh"] = "true" return response @app.route("/court-toggle/", methods=["POST"]) def toggle_court(court_number): id = int(court_number) status = g.courts.toggle(id) button = get_template_attribute("macros.j2", "court_button") return render_string("{{button(id, status)}}", id=id, status=status, button=button) @app.route("/courts", methods=["GET"]) def get_list_of_courts(): return render_template("courts.j2", courts=g.courts.all())