aboutsummaryrefslogtreecommitdiff
path: root/app/controller.py
diff options
context:
space:
mode:
authorKaran Jayachandra <mail@karanjayachandra.com>2025-07-13 18:20:04 +0200
committerKaran Jayachandra <mail@karanjayachandra.com>2025-07-13 18:20:04 +0200
commitd5d64f2b1047f864811d23f19f109a6513c22a2a (patch)
treeccea4ca1a4e58e65f74819daa67b8997d583ec71 /app/controller.py
parent673361f4475f0fde43fefa57735d766b4cb22c30 (diff)
Working version with several bugs
Diffstat (limited to 'app/controller.py')
-rw-r--r--app/controller.py33
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()