From ec3af3f76ae1785bfb8c1dfbc69788e95fc7954d Mon Sep 17 00:00:00 2001 From: Karan Jayachandra Date: Mon, 14 Jul 2025 09:23:32 +0200 Subject: Working app, guests implementation pending --- app/utilities.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'app/utilities.py') 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 -- cgit v1.3.1