Sort leaderboard table by total points
All checks were successful
Build Formula10 Docker Image / build-docker (push) Successful in 14s

This commit is contained in:
2024-03-02 13:25:03 +01:00
parent 49939a38b4
commit d5d128379d
3 changed files with 8 additions and 2 deletions

View File

@ -1,10 +1,11 @@
from typing import Dict, List, overload
from typing import Callable, Dict, List, overload
import numpy as np
from formula10.domain.domain_model import Model
from formula10.domain.model.driver import NONE_DRIVER
from formula10.domain.model.race_guess import RaceGuess
from formula10.domain.model.race_result import RaceResult
from formula10.domain.model.user import User
RACE_GUESS_OFFSET_POINTS: Dict[int, int] = {
3: 1,
@ -156,6 +157,10 @@ class PointsModel(Model):
"""
return sum(self.points_by(user_name=user_name))
def users_sorted_by_points(self) -> List[User]:
comparator: Callable[[User], int] = lambda user: self.total_points_by(user.name)
return sorted(self.all_users(), key=comparator, reverse=True)
def picks_count(self, user_name: str) -> int:
# Treat standing + dnf picks separately
return len(self.race_guesses_by(user_name=user_name)) * 2