summaryrefslogtreecommitdiff
path: root/src/match_up/model.py
diff options
context:
space:
mode:
authorKaran Jayachandra <mail@karanjayachandra.com>2024-11-09 18:49:40 +0100
committerKaran Jayachandra <mail@karanjayachandra.com>2024-11-09 18:49:40 +0100
commit14df28d5b8d3d9d80f24c532e1c096f8ac997e5b (patch)
treeb0b41dd9a9f3d3cd94cb07535410aa99bdfe8507 /src/match_up/model.py
parentbc587d676dca709c8ff8a21470a68938359a7ec8 (diff)
Added the random name generation to be part of the package
Diffstat (limited to 'src/match_up/model.py')
-rw-r--r--src/match_up/model.py36
1 files changed, 24 insertions, 12 deletions
diff --git a/src/match_up/model.py b/src/match_up/model.py
index c652ce8..592d60f 100644
--- a/src/match_up/model.py
+++ b/src/match_up/model.py
@@ -1,11 +1,13 @@
-from os import getenv
from math import floor
from csv import reader
from typing import Tuple
+from names import get_full_name
from dataclasses import dataclass
+from random import randint, getrandbits
MIN_LEVEL = 1
MAX_LEVEL = 10
+DEFAULT_COURTS = 12
PLAYER_PER_COURT = 4
@@ -28,10 +30,9 @@ class Game:
team1: Team
team2: Team
-
@dataclass
class CourtList:
- total: int = int(getenv("COURTS"))
+ total: int = DEFAULT_COURTS
def __post_init__(self) -> None:
self.courts = {i + 1: True for i in range(self.total)}
@@ -52,21 +53,32 @@ class CourtList:
inactive_courts = {k: v for k, v in self.courts.items() if not v}
return active_courts, inactive_courts
+def _load_csv_players(file_name: str) -> dict:
+ with open(file_name, newline="") as file:
+ pointer = reader(file)
+ next(pointer, None)
+ players = {
+ id: Player(row[0], int(row[1])) for id, row in enumerate(pointer)
+ }
+ return players
+
+def _generate_random_players(player_count: int = 80) -> list[Player]:
+ players = {i: Player(name=get_full_name(),
+ skill=randint(MIN_LEVEL, MAX_LEVEL),
+ status=bool(getrandbits(1))) for i in range(player_count)}
+ return players
@dataclass
class PlayerList:
- location: str = getenv("DATABASE")
+ location: str = None
guests: int = 0
def __post_init__(self) -> None:
- with open("data/" + self.location, newline="") as file:
- pointer = reader(file)
- next(pointer, None)
- players = {
- id: Player(row[0], int(row[1])) for id, row in enumerate(pointer)
- }
- self.guest_id_start = len(players) + 1
- self.players = players
+ if self.location is not None:
+ self.players = _load_csv_players(self.location)
+ else:
+ self.players = _generate_random_players()
+ self.guest_id_start = len(self.players) + 1
def increment_guests(self):
self.guests = self.guests + 1