diff options
Diffstat (limited to 'src/match_up/model.py')
| -rw-r--r-- | src/match_up/model.py | 71 |
1 files changed, 69 insertions, 2 deletions
diff --git a/src/match_up/model.py b/src/match_up/model.py index 52d72b2..467310b 100644 --- a/src/match_up/model.py +++ b/src/match_up/model.py @@ -1,12 +1,23 @@ from math import floor from typing import Tuple from os.path import isfile +from pandas import read_csv from dataclasses import dataclass from importlib.resources import path +from random import getrandbits, randint from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine, not_ -from match_up.data import PLAYER_PER_COURT, BASE, Player, DisplayPlayer -from match_up.utilities import _init_database_from_csv, _init_random_database +from names import get_first_name, get_last_name +from match_up.data import ( + MIN_LEVEL, + MAX_LEVEL, + PLAYER_PER_COURT, + BASE, + GUEST_LEVELS, + GUESTS_PER_LEVEL, + Player, + DisplayPlayer, +) @dataclass @@ -33,6 +44,62 @@ class CourtList: return active_courts, inactive_courts +def _init_guests(session) -> None: + for level_id, level in enumerate(GUEST_LEVELS): + for player_id in range(GUESTS_PER_LEVEL): + unique_id = (level_id * GUESTS_PER_LEVEL) + player_id + 1 + player = Player( + id=-unique_id, + first="Guest", + last=str(unique_id), + level=level, + status=False, + count=0, + ) + session.add(player) + session.commit() + + +def _init_database_from_csv(session, csv_location: str) -> None: + data = read_csv(csv_location) + session.query(Player).delete() + for _, entry in data.iterrows(): + player = Player( + id=entry["id"], + first=entry["first"], + last=entry["last"], + level=entry["skill"], + team=entry["team"], + status=False, + count=0, + ) + session.add(player) + session.commit() + _init_guests(session) + + +def _init_random_database(session, player_count: int = 80) -> None: + total_teams = 5 + players_per_team = 5 + for i in range(player_count): + if i < total_teams * players_per_team: + team = floor(i / players_per_team) + 1 + else: + team = 0 + player = Player( + id=i, + first=get_first_name(), + last=get_last_name(), + level=randint(MIN_LEVEL, MAX_LEVEL), + team=team, + status=bool(getrandbits(1)), + count=0, + ) + session.add(player) + session.commit() + _init_guests(session) + + class PlayerList: def __init__(self, csv_location=None) -> None: |
