summaryrefslogtreecommitdiff
path: root/app/utilities.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/utilities.py')
-rw-r--r--app/utilities.py14
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