diff options
Diffstat (limited to 'app/utilities.py')
| -rw-r--r-- | app/utilities.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/app/utilities.py b/app/utilities.py index c84e1bf..133f9e1 100644 --- a/app/utilities.py +++ b/app/utilities.py @@ -1,7 +1,9 @@ from app import app, db +from datetime import date +from sqlalchemy import func from typing import Tuple, Sequence from random import shuffle, sample -from app.model import Player, DisplayPlayer, Court, DisplayGame, DisplayTeam +from app.model import Player, DisplayPlayer, Court, Game, DisplayGame, DisplayTeam def _shuffle_two_lists(a: list, b: list) -> Tuple[list, list]: @@ -26,13 +28,19 @@ def sample_list(indices: list, cost: list[int], count=None) -> list: def _normalize_skill(level: int, new_max: int) -> int: - new_level = round((new_max - 1) * (level / app.config["MAX_PLAYER_LEVEL"])) + 1 + scaling = (new_max - 1) / int(app.config["MAX_PLAYER_LEVEL"]) + new_level = round(scaling * level) + 1 return new_level def select_players(players: Sequence[Player], count: int) -> list[Player]: + games = db.session.query(Game).filter(func.date(Game.date) == date.today()).all() + player_identifiers = [] + for game in games: + for i in range(4): + player_identifiers.append(getattr(game, f"player_{i+1}")) identifiers = [player.id for player in players] - play_count = [int(player.id) for player in players] + play_count = [player_identifiers.count(player.id) for player in players] ids = sample_list(identifiers, play_count, count) selected_players = [player for player in players if player.id in ids] return selected_players |
