From 5b856ff22ea85ecc0073dc94840d76ea2ed2f1e2 Mon Sep 17 00:00:00 2001 From: Karan Jayachandra Date: Fri, 15 Nov 2024 13:42:39 +0100 Subject: Added the reset player funcitonality --- src/match_up/model.py | 37 +++++++++++++++++++++++-------------- src/match_up/routes.py | 10 +++++++++- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/match_up/model.py b/src/match_up/model.py index c5a0af9..b1e77f5 100644 --- a/src/match_up/model.py +++ b/src/match_up/model.py @@ -108,23 +108,19 @@ class PlayerList: guests: dict = {"low": 0, "mid": 0, "high": 0} def __init__(self, csv_location: str = None) -> None: + self._init_database() + if csv_location is not None: + self._init_database_from_csv(read_csv(csv_location)) + else: + if not isfile(self.db_location): + self._init_random_database() + + def _init_database(self): with path("match_up") as p: self.db_location = join(p, "players.db") - generate_random_players = False - if not isfile(self.db_location): - print(f"No database file found") - if csv_location is None: - generate_random_players = True engine = create_engine("sqlite:///" + self.db_location, echo=True) Base.metadata.create_all(bind=engine) self.session = sessionmaker(bind=engine)() - if csv_location is not None: - print(f"CSV file provided, updating the database") - self.session.query(Player).delete() - self._init_database_from_csv(read_csv(csv_location)) - elif generate_random_players: - print(f"Generating random players for testing") - self._init_random_database() def increment_guests(self, level: str): self.guests[level] = self.guests[level] + 1 @@ -202,12 +198,25 @@ class PlayerList: return active_players + low_guests + mid_guests + high_guests def increment_game_count(self, player_ids: list[int]): - return NotImplementedError() + players = self.session.query(Player).filter(Player.id.in_(player_ids)) + for player in players: + player.count += 1 + self.session.commit() def reset_game_count(self): - return NotImplementedError() + players = self.session.query(Player) + for player in players: + player.count = 0 + self.session.commit() + + def reset_all_players(self): + players = self.session.query(Player) + for player in players: + player.status = 0 + self.session.commit() def _init_database_from_csv(self, data: DataFrame) -> None: + self.session.query(Player).delete() for _, entry in data.iterrows(): player = Player( id=entry["id"], diff --git a/src/match_up/routes.py b/src/match_up/routes.py index f64eafa..57e9812 100644 --- a/src/match_up/routes.py +++ b/src/match_up/routes.py @@ -1,6 +1,6 @@ from match_up import app, rg from jinja2 import Environment, PackageLoader -from flask import render_template, request, url_for +from flask import render_template, request, url_for, Response re = Environment(loader=PackageLoader("match_up")) @@ -101,6 +101,14 @@ def get_list_of_players(): return re.get_template("players.j2").render(players=all_players, url_for=url_for) +@app.route("/reset_players", methods=["POST"]) +def reset_all_players(): + rg.players.reset_all_players() + 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) -- cgit v1.3.1