diff options
| author | Karan Jayachandra <mail@karanjayachandra.com> | 2025-07-13 18:20:04 +0200 |
|---|---|---|
| committer | Karan Jayachandra <mail@karanjayachandra.com> | 2025-07-13 18:20:04 +0200 |
| commit | d5d64f2b1047f864811d23f19f109a6513c22a2a (patch) | |
| tree | ccea4ca1a4e58e65f74819daa67b8997d583ec71 /app/model.py | |
| parent | 673361f4475f0fde43fefa57735d766b4cb22c30 (diff) | |
Working version with several bugs
Diffstat (limited to 'app/model.py')
| -rw-r--r-- | app/model.py | 68 |
1 files changed, 45 insertions, 23 deletions
diff --git a/app/model.py b/app/model.py index 2833bb1..56921f4 100644 --- a/app/model.py +++ b/app/model.py @@ -31,11 +31,12 @@ class Court(db.Model): class Courts: def __init__(self): - if app.config["COURT_COUNT"] is not None: - db.session.query(Court).delete() - for i in range(app.config["COURT_COUNT"]): - db.session.add(Court()) - db.session.commit() + with app.app_context(): + if app.config["COURT_COUNT"] is not None: + db.session.query(Court).delete() + for i in range(int(app.config["COURT_COUNT"])): + db.session.add(Court()) + db.session.commit() def get(self, id: int) -> bool: court = db.session.get(Court, id) @@ -69,9 +70,17 @@ class Player(db.Model): id: Mapped[int] = mc(primary_key=True) first_name: Mapped[str] = mc(String(64), index=True, default="---") last_name: Mapped[str] = mc(String(64), index=True, default="---") - team: Mapped[int] = mc(Integer, index=True, default=0) - status: Mapped[bool] = mc(Boolean, default=False) - level: Mapped[int] = mc(Integer, default=app.config["MIN_PLAYER_LEVEL"]) + team: Mapped[int] = mc(Integer, index=True) + status: Mapped[bool] = mc(Boolean) + level: Mapped[int] = mc(Integer) + + def __init__(self, id, first_name, last_name, team = 0, status = False, level = int(app.config["MIN_PLAYER_LEVEL"])): + self.id = id + self.first_name = first_name + self.last_name = last_name + self.team = team + self.status = status + self.level = level def __repr__(self): return f"{self.first_name} {self.last_name} is {"active" if self.status else "inactive"}" @@ -80,8 +89,8 @@ class Player(db.Model): def initialize_random_database( player_count: int = 80, guest_per_level: int = 4 ) -> None: - db.session.add(Player(*{"first_name": "---", "last_name": ""})) - db.session.add(Player(*{"first_name": "RESERVED", "last_name": ""})) + db.session.add(Player(**{"id": 0, "first_name": "---", "last_name": ""})) + db.session.add(Player(**{"id": 1, "first_name": "RESERVED", "last_name": ""})) total_teams = 5 players_per_team = 5 for i in range(player_count): @@ -98,29 +107,32 @@ def initialize_random_database( app.config["MIN_PLAYER_LEVEL"], app.config["MAX_PLAYER_LEVEL"] ), } - db.session.add(Player(*args)) + db.session.add(Player(**args)) meta_data = {"first_name": "Guest", "team": 0, "status": False} for level_id, level in enumerate(app.config["GUEST_LEVELS"]): for player_id in range(guest_per_level): unique_id = (level_id * guest_per_level) + player_id + 1 args = meta_data | {"last_name": str(unique_id), "level": level} - db.session.add(Player(*args)) + db.session.add(Player(**args)) db.session.commit() class Players: def __init__(self) -> None: - if app.config["DATABASE_CSV"] is not None: - data = read_csv(app.config["DATABASE_CSV"]) - db.session.query(Player).delete() - for entry in data.to_dict("records"): - args = entry | {"status": False} - db.session.add(Player(*args)) - db.session.commit() - else: - if len(self.all()) == 0: - initialize_random_database() + with app.app_context(): + if app.config["DATABASE_CSV"] is not None: + data = read_csv(app.config["DATABASE_CSV"]) + db.session.query(Player).delete() + db.session.add(Player(**{"id": 0, "first_name": "---", "last_name": ""})) + db.session.add(Player(**{"id": 1, "first_name": "RESERVED", "last_name": ""})) + for entry in data.to_dict("records"): + args = entry | {"status": False} + db.session.add(Player(**args)) + db.session.commit() + else: + if len(self.all()) == 0: + initialize_random_database() def default_id(self): query = select(Player).where(Player.first_name == "---") @@ -184,12 +196,22 @@ class Game(db.Model): player_4: Mapped[int] = mc(ForeignKey(Player.id), index=True) date: Mapped[datetime] = mc(index=True, default=lambda: date.today()) + def __init__(self, round_id: int, court_id: int, player_1: int, player_2: int, player_3: int, player_4: int): + self.round_id = round_id + self.court_id = court_id + self.player_1 = player_1 + self.player_2 = player_2 + self.player_3 = player_3 + self.player_4 = player_4 + + class DisplayPlayer: def __init__(self, player: Player): self.id = player.id - self.name = f"{player.first_name} {player.last_name}" + self.first_name = player.first_name + self.last_name = player.last_name @dataclass |
