Season 9 Additions

This commit is contained in:
Cal Corum 2024-01-14 22:44:23 -06:00
parent 025445bb99
commit fae1439365
5 changed files with 35 additions and 6 deletions

View File

@ -1918,6 +1918,7 @@ class StratGame(BaseModel):
home_score = IntegerField(null=True) home_score = IntegerField(null=True)
away_manager = ForeignKeyField(Manager, null=True) away_manager = ForeignKeyField(Manager, null=True)
home_manager = ForeignKeyField(Manager, null=True) home_manager = ForeignKeyField(Manager, null=True)
scorecard_url = CharField(null=True)
def update_standings(self): def update_standings(self):
away_stan = Standings.get_season(self.away_team) away_stan = Standings.get_season(self.away_team)
@ -2173,6 +2174,12 @@ class StratPlay(BaseModel):
is_tied = BooleanField(default=False) is_tied = BooleanField(default=False)
is_new_inning = BooleanField(default=False) is_new_inning = BooleanField(default=False)
# Season 9 addons
hand_batting = CharField(null=True)
hand_pitching = CharField(null=True)
re24_primary = FloatField(null=True)
re24_running = FloatField(null=True)
class Decision(BaseModel): class Decision(BaseModel):
game = ForeignKeyField(StratGame) game = ForeignKeyField(StratGame)
@ -2180,6 +2187,7 @@ class Decision(BaseModel):
week = IntegerField() week = IntegerField()
game_num = IntegerField() game_num = IntegerField()
pitcher = ForeignKeyField(Player) pitcher = ForeignKeyField(Player)
team = ForeignKeyField(Team)
win = IntegerField() win = IntegerField()
loss = IntegerField() loss = IntegerField()
hold = IntegerField() hold = IntegerField()

View File

@ -25,6 +25,7 @@ class DecisionModel(pydantic.BaseModel):
week: int week: int
game_num: int game_num: int
pitcher_id: int pitcher_id: int
team_id: int
win: int = 0 win: int = 0
loss: int = 0 loss: int = 0
hold: int = 0 hold: int = 0
@ -68,9 +69,12 @@ async def get_decisions(
# all_games = StratGame.select().where( # all_games = StratGame.select().where(
# (StratGame.away_team << all_teams) | (StratGame.home_team << all_teams)) # (StratGame.away_team << all_teams) | (StratGame.home_team << all_teams))
# all_dec = all_dec.where(Decision.game << all_games) # all_dec = all_dec.where(Decision.game << all_games)
# if team_id is not None:
# all_players = Player.select().where(Player.team_id << team_id)
# all_dec = all_dec.where(Decision.pitcher << all_players)
if team_id is not None: if team_id is not None:
all_players = Player.select().where(Player.team_id << team_id) all_teams = Team.select().where(Team.id << team_id)
all_dec = all_dec.where(Decision.pitcher << all_players) all_dec = all_dec.where(Decision.team << all_teams)
if s_type is not None: if s_type is not None:
all_games = StratGame.select().where(StratGame.season_type == s_type) all_games = StratGame.select().where(StratGame.season_type == s_type)
all_dec = all_dec.where(Decision.game << all_games) all_dec = all_dec.where(Decision.game << all_games)

View File

@ -30,6 +30,7 @@ class GameModel(pydantic.BaseModel):
home_score: Optional[int] = None home_score: Optional[int] = None
away_manager_id: Optional[int] = None away_manager_id: Optional[int] = None
home_manager_id: Optional[int] = None home_manager_id: Optional[int] = None
scorecard_url: Optional[str] = None
class GameList(pydantic.BaseModel): class GameList(pydantic.BaseModel):
@ -122,7 +123,7 @@ async def get_one_game(game_id: int):
async def patch_game( async def patch_game(
game_id: int, game_num: Optional[int] = None, away_score: Optional[int] = None, game_id: int, game_num: Optional[int] = None, away_score: Optional[int] = None,
home_score: Optional[int] = None, away_manager_id: Optional[int] = None, home_manager_id: Optional[int] = None, home_score: Optional[int] = None, away_manager_id: Optional[int] = None, home_manager_id: Optional[int] = None,
token: str = Depends(oauth2_scheme)): token: str = Depends(oauth2_scheme), scorecard_url: Optional[str] = None):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_game - Bad Token: {token}') logging.warning(f'patch_game - Bad Token: {token}')
raise HTTPException(status_code=401, detail='Unauthorized') raise HTTPException(status_code=401, detail='Unauthorized')
@ -142,6 +143,8 @@ async def patch_game(
this_game.away_manager_id = away_manager_id this_game.away_manager_id = away_manager_id
if home_manager_id is not None: if home_manager_id is not None:
this_game.home_manager_id = home_manager_id this_game.home_manager_id = home_manager_id
if scorecard_url is not None:
this_game.scorecard_url = scorecard_url
if this_game.save() == 1: if this_game.save() == 1:
g_result = model_to_dict(this_game) g_result = model_to_dict(this_game)

View File

@ -86,6 +86,11 @@ class PlayModel(BaseModel):
is_tied: bool = False is_tied: bool = False
is_new_inning: bool = False is_new_inning: bool = False
hand_batting: str = None
hand_pitching: str = None
re24_primary: float = None
re24_running: float = None
@validator('on_first_final') @validator('on_first_final')
def no_final_if_no_runner_one(cls, v, values): def no_final_if_no_runner_one(cls, v, values):
if values['on_first_id'] is None: if values['on_first_id'] is None:
@ -611,9 +616,11 @@ async def get_pitching_totals(
if player_id is not None: if player_id is not None:
all_players = Player.select().where(Player.id << player_id) all_players = Player.select().where(Player.id << player_id)
pit_plays = pit_plays.where(StratPlay.pitcher << all_players) pit_plays = pit_plays.where(StratPlay.pitcher << all_players)
all_dec = all_dec.where(Decision.pitcher << all_players)
if team_id is not None: if team_id is not None:
all_teams = Team.select().where(Team.id << team_id) all_teams = Team.select().where(Team.id << team_id)
pit_plays = pit_plays.where(StratPlay.pitcher_team << all_teams) pit_plays = pit_plays.where(StratPlay.pitcher_team << all_teams)
all_dec = all_dec.where(Decision.team << all_teams)
if obc is not None: if obc is not None:
pit_plays = pit_plays.where(StratPlay.on_base_code << obc) pit_plays = pit_plays.where(StratPlay.on_base_code << obc)

View File

@ -11,7 +11,10 @@ migrator = SqliteMigrator(db_engine.db)
# pitcher_injury = IntegerField(null=True) # pitcher_injury = IntegerField(null=True)
# pos_1 = CharField(default='None') # pos_1 = CharField(default='None')
# pos_2 = CharField(null=True) # pos_2 = CharField(null=True)
# last_game = CharField(null=True) # hand_batting = CharField(null=True)
# hand_pitching = CharField(null=True)
# re24_primary = FloatField(null=True)
# re24_running = FloatField(null=True)
# last_game2 = CharField(null=True) # last_game2 = CharField(null=True)
# division = ForeignKeyField(db_engine.Division, field=db_engine.Division.id, null=True) # for division migration # division = ForeignKeyField(db_engine.Division, field=db_engine.Division.id, null=True) # for division migration
# manager = ForeignKeyField(db_engine.Manager, field=db_engine.Manager.id, null=True) # for manager table # manager = ForeignKeyField(db_engine.Manager, field=db_engine.Manager.id, null=True) # for manager table
@ -20,6 +23,7 @@ migrator = SqliteMigrator(db_engine.db)
# f_career = ForeignKeyField(db_engine.FieldingCareer, field=db_engine.FieldingCareer.id, null=True) # for careers # f_career = ForeignKeyField(db_engine.FieldingCareer, field=db_engine.FieldingCareer.id, null=True) # for careers
away_manager = ForeignKeyField(db_engine.Manager, field=db_engine.Manager.id, null=True) # to add Manager to games away_manager = ForeignKeyField(db_engine.Manager, field=db_engine.Manager.id, null=True) # to add Manager to games
home_manager = ForeignKeyField(db_engine.Manager, field=db_engine.Manager.id, null=True) # to add Manager to games home_manager = ForeignKeyField(db_engine.Manager, field=db_engine.Manager.id, null=True) # to add Manager to games
team = ForeignKeyField(db_engine.Team, field=db_engine.Team.id, null=True) # to add Team to decisions
migrate( migrate(
# migrator.add_column('team', 'division_id', division), # for division migration # migrator.add_column('team', 'division_id', division), # for division migration
@ -38,6 +42,9 @@ migrate(
# migrator.rename_table('story', 'stories_tbl'), # migrator.rename_table('story', 'stories_tbl'),
# migrator.drop_index('team', 'team_abbrev'), # migrator.drop_index('team', 'team_abbrev'),
# migrator.drop_index('player', 'player_name') # migrator.drop_index('player', 'player_name')
# migrator.add_column('stratgame', 'away_manager_id', away_manager), migrator.add_column('decision', 'team', team),
migrator.add_column('stratgame', 'home_manager_id', home_manager) # migrator.add_column('stratplay', 'hand_batting', hand_batting),
# migrator.add_column('stratplay', 'hand_pitching', hand_pitching),
# migrator.add_column('stratplay', 're24_primary', re24_primary),
# migrator.add_column('stratplay', 're24_running', re24_running)
) )