From 14df28d5b8d3d9d80f24c532e1c096f8ac997e5b Mon Sep 17 00:00:00 2001 From: Karan Jayachandra Date: Sat, 9 Nov 2024 18:49:40 +0100 Subject: Added the random name generation to be part of the package --- src/match_up/model.py | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'src/match_up/model.py') 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 -- cgit v1.3.1