diff options
Diffstat (limited to 'app/controller.py')
| -rw-r--r-- | app/controller.py | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/app/controller.py b/app/controller.py index 1937af8..5bdeba7 100644 --- a/app/controller.py +++ b/app/controller.py @@ -2,7 +2,7 @@ from math import floor from app import app, db from datetime import date from operator import attrgetter -from sqlalchemy import select, func +from sqlalchemy import select, func, Date from app.model import ( Player, Players, @@ -28,19 +28,19 @@ class Session: players: Players = Players() def __init__(self): - games = db.session.query(Game).filter(Game.date.date() == date.today()).all() - if len(games) > 0: - return - id = self.players.default_id() - player_data = {f"player_{i+1}": id for i in range(4)} - for court in self.courts.all(): - args = {"round_id": 0, "court_id": court.id} | player_data - db.session.add(Game(*args)) - db.session.commit() + with app.app_context(): + db.session.query(Game).delete() + id = self.players.default_id() + player_data = {f"player_{i+1}": id for i in range(4)} + for court in self.courts.all(): + args = {"round_id": 0, "court_id": court.id} | player_data + db.session.add(Game(**args)) + db.session.commit() def round(self) -> int: - query = select(func.max(Game.round_id)).where(Game.date.date() == date.today()) - round_id = db.session.scalars(query).first() + games = db.session.query(Game).filter(func.date(Game.date) == date.today()).all() + round_id = max([game.round_id for game in games]) + print(round_id) if round_id is None: raise ValueError(f"Database isn't initialized") return round_id @@ -48,7 +48,7 @@ class Session: def all(self) -> list[DisplayGame]: games = ( db.session.query(Game) - .filter(Game.date.date() == date.today()) + .filter(func.date(Game.date) == date.today()) .filter(Game.round_id == self.round()) .order_by(Game.court_id) .all() @@ -60,6 +60,7 @@ class Session: p = db.session.get(Player, getattr(game, f"player_{i+1}")) if p is None: raise ValueError(f"Player id mismatch.") + dp.append(p) t1 = DisplayTeam(DisplayPlayer(dp[0]), DisplayPlayer(dp[1])) t2 = DisplayTeam(DisplayPlayer(dp[2]), DisplayPlayer(dp[3])) db.session.get(Player, game.player_2) @@ -71,7 +72,9 @@ class Session: reserved_games = get_placeholder_games(reserved_courts, "RESERVED") active_courts = self.courts.active() active_players = self.players.active() - game_count = floor(len(active_players) / app.config["PLAYER_PER_COURT"]) + for player in active_players: + print(player) + game_count = floor(len(active_players) / app.config["PLAYERS_PER_COURT"]) game_count = min(len(active_courts), game_count) used_courts = active_courts[:game_count] unused_courts = active_courts[game_count:] @@ -97,7 +100,7 @@ class Session: return self.all() def reset(self) -> list[DisplayGame]: - db.session.query(Game).filter(Game.date.date() == date.today()).delete() + db.session.query(Game).filter(Game.date.cast(Date) == date.today()).delete() db.session.commit() self.__init__() return self.all() |
