from os import getenv from dotenv import load_dotenv from controller import RoundGenerator from model import CourtList, PlayerList from jinja2 import FileSystemLoader, Environment from flask import Flask, render_template, request load_dotenv() app = Flask("Match Up! Backend") app.config.from_object(getenv("APP_SETTINGS")) rg = RoundGenerator(courts=CourtList(12), players=PlayerList(getenv("DATABASE"))) re = Environment(loader=FileSystemLoader("templates")) @app.route("/", methods=["GET"]) def home(): return render_template("index.j2") @app.route("/guests", methods=["GET"]) def get_guests(): return render_template("guests.j2", guests=rg.players.guests) @app.route("/decrement", methods=["POST"]) def increment_guests(): return render_template("guests.j2", guests=rg.players.decrement_guests()) @app.route("/increment", methods=["POST"]) def decrement_guests(): return render_template("guests.j2", guests=rg.players.increment_guests()) @app.route("/propose", methods=["POST"]) def get_random_games(): levels = int(request.form["type"].split()[0]) return render_template("games.j2", games=rg.propose(levels), title="Proposal") @app.route("/confirm", methods=["POST"]) def confirm_games(): return render_template("games.j2", games=rg.confirm(), title=f"Round: {rg.round}") @app.route("/clear", methods=["POST"]) def clear_games(): return render_template("games.j2", games=rg.clear(), title=f"Round: {rg.round}") @app.route("/player-toggle/", methods=["POST"]) def toggle_player(player_request): id = int(player_request) status, name = rg.players.toggle_player_status(id) t = re.from_string( '{% from "macros.j2" import player %}{{player(id, status, name)}}' ) return render_template(t, id=id, status=status, name=name) @app.route("/players", methods=["GET"]) def get_list_of_players(): return render_template("players.j2", players=rg.players.get_players()) @app.route("/court-toggle/", methods=["POST"]) def toggle_court(court_number): id = int(court_number) status = rg.courts.toggle_court_status(id) print(status) t = re.from_string('{% from "macros.j2" import court %}{{ court(id, status) }}') print(render_template(t, id=id, status=status)) return render_template(t, id=id, status=status) @app.route("/courts", methods=["GET"]) def get_list_of_courts(): return render_template("courts.j2", courts=rg.courts.get_courts())