aboutsummaryrefslogtreecommitdiff
path: root/src/match_up/app.py
diff options
context:
space:
mode:
authorKaran Jayachandra <mail@karanjayachandra.com>2024-10-25 18:03:18 +0200
committerKaran Jayachandra <mail@karanjayachandra.com>2024-10-25 18:03:18 +0200
commit60a489cfb3fb7a12a06212c2c7ed3c05cd0757b5 (patch)
tree8bf7b9cc50d8b133fe0666b0bff7fa143cd095a5 /src/match_up/app.py
parent2b18e0929a0b3e083cbe9e5e8ffd421ed8d17e52 (diff)
Moved the files into a folder structure
Diffstat (limited to 'src/match_up/app.py')
-rw-r--r--src/match_up/app.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/match_up/app.py b/src/match_up/app.py
new file mode 100644
index 0000000..cb790f3
--- /dev/null
+++ b/src/match_up/app.py
@@ -0,0 +1,90 @@
+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")
+rg = RoundGenerator(courts=CourtList(), players=PlayerList())
+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("/control", methods=["GET"])
+def get_controls():
+ return render_template("controls.j2", courts=rg.courts.get_courts())
+
+
+@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():
+ t = re.from_string('{% from "macros.j2" import guests %}{{guests(count)}}')
+ return render_template(t, count=rg.players.decrement_guests())
+
+
+@app.route("/increment", methods=["POST"])
+def decrement_guests():
+ t = re.from_string('{% from "macros.j2" import guests %}{{guests(count)}}')
+ return render_template(t, count=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())