diff options
| author | Karan Jayachandra <mail@karanjayachandra.com> | 2024-10-16 21:42:22 +0000 |
|---|---|---|
| committer | Karan Jayachandra <mail@karanjayachandra.com> | 2024-10-16 21:42:22 +0000 |
| commit | 7643486d7122b322a052bfca8ec83326c48053d0 (patch) | |
| tree | 096d2b629818f79674d22a14eff124f082449b6e /app.py | |
| parent | 9ef7d95c7010351078a929f5144f5098d4142cd0 (diff) | |
| parent | 36cc7d82a55cbd8167e1f52637dd1938497dd8cc (diff) | |
Merge branch 'develop' into 'main'
Full functionality available
See merge request KaranJayachandra/match_up!3
Diffstat (limited to 'app.py')
| -rw-r--r-- | app.py | 87 |
1 files changed, 87 insertions, 0 deletions
@@ -0,0 +1,87 @@ +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(int(getenv("COURTS"))), players=PlayerList(getenv("DATABASE")) +) +re = Environment(loader=FileSystemLoader("templates")) + + +@app.route("/", methods=["GET"]) +def home(): + return render_template("index.j2") + + +@app.route("/time", methods=["GET"]) +def get_time(): + mins, secs = rg.timer.get() + t = re.from_string('{% from "macros.j2" import timer %}{{timer(mins, secs)}}') + return render_template(t, mins=mins, secs=secs) + + +@app.route("/guests", methods=["GET"]) +def get_guests(): + t = re.from_string('{% from "macros.j2" import guests %}{{guests(count)}}') + return render_template(t, count=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/<player_request>", 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/<court_number>", methods=["POST"]) +def toggle_court(court_number): + id = int(court_number) + status = rg.courts.toggle_court_status(id) + t = re.from_string('{% from "macros.j2" import court %}{{ court(id, 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()) |
