Implement domain version of season_guess_result
This commit is contained in:
@ -6,6 +6,7 @@ from formula10.database.model.db_race import DbRace
|
|||||||
from formula10.database.model.db_race_guess import DbRaceGuess
|
from formula10.database.model.db_race_guess import DbRaceGuess
|
||||||
from formula10.database.model.db_race_result import DbRaceResult
|
from formula10.database.model.db_race_result import DbRaceResult
|
||||||
from formula10.database.model.db_season_guess import DbSeasonGuess
|
from formula10.database.model.db_season_guess import DbSeasonGuess
|
||||||
|
from formula10.database.model.db_season_guess_result import DbSeasonGuessResult
|
||||||
from formula10.database.model.db_team import DbTeam
|
from formula10.database.model.db_team import DbTeam
|
||||||
from formula10.database.model.db_user import DbUser
|
from formula10.database.model.db_user import DbUser
|
||||||
from formula10.database.validation import find_multiple_strict, find_single_or_none_strict, find_single_strict
|
from formula10.database.validation import find_multiple_strict, find_single_or_none_strict, find_single_strict
|
||||||
@ -14,6 +15,7 @@ from formula10.domain.model.race import Race
|
|||||||
from formula10.domain.model.race_guess import RaceGuess
|
from formula10.domain.model.race_guess import RaceGuess
|
||||||
from formula10.domain.model.race_result import RaceResult
|
from formula10.domain.model.race_result import RaceResult
|
||||||
from formula10.domain.model.season_guess import SeasonGuess
|
from formula10.domain.model.season_guess import SeasonGuess
|
||||||
|
from formula10.domain.model.season_guess_result import SeasonGuessResult
|
||||||
from formula10.domain.model.team import NONE_TEAM, Team
|
from formula10.domain.model.team import NONE_TEAM, Team
|
||||||
from formula10.domain.model.user import User
|
from formula10.domain.model.user import User
|
||||||
from formula10 import db
|
from formula10 import db
|
||||||
@ -24,6 +26,7 @@ class Model():
|
|||||||
_all_race_results: List[RaceResult] | None = None
|
_all_race_results: List[RaceResult] | None = None
|
||||||
_all_race_guesses: List[RaceGuess] | None = None
|
_all_race_guesses: List[RaceGuess] | None = None
|
||||||
_all_season_guesses: List[SeasonGuess] | None = None
|
_all_season_guesses: List[SeasonGuess] | None = None
|
||||||
|
_all_season_guess_results: List[SeasonGuessResult] | None = None
|
||||||
_all_races: List[Race] | None = None
|
_all_races: List[Race] | None = None
|
||||||
_all_drivers: List[Driver] | None = None
|
_all_drivers: List[Driver] | None = None
|
||||||
_all_teams: List[Team] | None = None
|
_all_teams: List[Team] | None = None
|
||||||
@ -76,6 +79,15 @@ class Model():
|
|||||||
|
|
||||||
return self._all_season_guesses
|
return self._all_season_guesses
|
||||||
|
|
||||||
|
def all_season_guess_results(self) -> List[SeasonGuessResult]:
|
||||||
|
if self._all_season_guess_results is None:
|
||||||
|
self._all_season_guess_results = [
|
||||||
|
SeasonGuessResult.from_db_season_guess_result(db_season_guess_result)
|
||||||
|
for db_season_guess_result in db.session.query(DbSeasonGuessResult).join(DbSeasonGuessResult.user).filter_by(enabled=True).all() # Ignore disabled users
|
||||||
|
]
|
||||||
|
|
||||||
|
return self._all_season_guess_results
|
||||||
|
|
||||||
def all_races(self) -> List[Race]:
|
def all_races(self) -> List[Race]:
|
||||||
"""
|
"""
|
||||||
Returns a list of all races, in descending order (last race first).
|
Returns a list of all races, in descending order (last race first).
|
||||||
@ -227,7 +239,7 @@ class Model():
|
|||||||
#
|
#
|
||||||
|
|
||||||
@overload
|
@overload
|
||||||
def season_guesses_by(self, *, user_name: str) -> SeasonGuess:
|
def season_guesses_by(self, *, user_name: str) -> SeasonGuess | None:
|
||||||
"""
|
"""
|
||||||
Returns the season guess made by a specific user.
|
Returns the season guess made by a specific user.
|
||||||
"""
|
"""
|
||||||
@ -256,6 +268,14 @@ class Model():
|
|||||||
|
|
||||||
raise Exception("season_guesses_by encountered illegal combination of arguments")
|
raise Exception("season_guesses_by encountered illegal combination of arguments")
|
||||||
|
|
||||||
|
#
|
||||||
|
# Season guess result queries
|
||||||
|
#
|
||||||
|
|
||||||
|
def season_guess_result_by(self, *, user_name: str) -> SeasonGuessResult | None:
|
||||||
|
predicate: Callable[[SeasonGuessResult], bool] = lambda guess: guess.user.name == user_name
|
||||||
|
return find_single_or_none_strict(predicate, self.all_season_guess_results())
|
||||||
|
|
||||||
#
|
#
|
||||||
# Team queries
|
# Team queries
|
||||||
#
|
#
|
||||||
|
17
formula10/domain/model/season_guess_result.py
Normal file
17
formula10/domain/model/season_guess_result.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
from formula10.database.model.db_season_guess_result import DbSeasonGuessResult
|
||||||
|
from formula10.domain.model.user import User
|
||||||
|
|
||||||
|
|
||||||
|
class SeasonGuessResult():
|
||||||
|
@classmethod
|
||||||
|
def from_db_season_guess_result(cls, db_season_guess_result: DbSeasonGuessResult):
|
||||||
|
season_guess_result: SeasonGuessResult = cls()
|
||||||
|
season_guess_result.user = User.from_db_user(db_season_guess_result.user)
|
||||||
|
season_guess_result.hot_take_correct = db_season_guess_result.hot_take_correct
|
||||||
|
season_guess_result.overtakes_correct = db_season_guess_result.overtakes_correct
|
||||||
|
|
||||||
|
return season_guess_result
|
||||||
|
|
||||||
|
user: User
|
||||||
|
hot_take_correct: bool
|
||||||
|
overtakes_correct: bool
|
Reference in New Issue
Block a user