Update stratplay.py

Add teamposition grouping
This commit is contained in:
Cal Corum 2023-08-07 15:09:20 -05:00
parent 08e54e10a1
commit b259f8b693

View File

@ -529,7 +529,7 @@ async def get_fielding_totals(
season: list = Query(default=None), week: list = Query(default=None), season: list = Query(default=None), week: list = Query(default=None),
s_type: Literal['regular', 'post', 'total', None] = None, position: list = Query(default=None), s_type: Literal['regular', 'post', 'total', None] = None, position: list = Query(default=None),
player_id: list = Query(default=None), player_id: list = Query(default=None),
group_by: Literal['team', 'player', 'playerteam', 'playerposition'] = 'player', group_by: Literal['team', 'player', 'playerteam', 'playerposition', 'teamposition'] = 'player',
min_ch: Optional[int] = 1, team_id: list = Query(default=None), manager_id: list = Query(default=None), min_ch: Optional[int] = 1, team_id: list = Query(default=None), manager_id: list = Query(default=None),
sort: Optional[str] = None, limit: Optional[int] = None, short_output: Optional[bool] = False): sort: Optional[str] = None, limit: Optional[int] = None, short_output: Optional[bool] = False):
season_games = StratGame.select() season_games = StratGame.select()
@ -582,6 +582,9 @@ async def get_fielding_totals(
elif group_by == 'playerposition': elif group_by == 'playerposition':
def_plays = def_plays.group_by(StratPlay.defender, StratPlay.check_pos) def_plays = def_plays.group_by(StratPlay.defender, StratPlay.check_pos)
cat_plays = cat_plays.group_by(StratPlay.catcher) cat_plays = cat_plays.group_by(StratPlay.catcher)
elif group_by == 'teamposition':
def_plays = def_plays.group_by(StratPlay.defender_team, StratPlay.check_pos)
cat_plays = cat_plays.group_by(StratPlay.catcher_team)
if sort is not None: if sort is not None:
if sort == 'player': if sort == 'player':
def_plays = def_plays.order_by(StratPlay.defender) def_plays = def_plays.order_by(StratPlay.defender)
@ -620,11 +623,16 @@ async def get_fielding_totals(
sum_cs = 0 sum_cs = 0
sum_wpa = 0 sum_wpa = 0
sum_pb = 0 sum_pb = 0
this_pos = 'TOT' this_pos = 'TOT'
if group_by == 'playerposition': if group_by in ['playerposition', 'teamposition']:
this_pos = x.check_pos this_pos = x.check_pos
this_player = x.defender_id if short_output else model_to_dict(x.defender, recurse=False)
if group_by == 'teamposition':
this_player = 'TOT'
return_stats['stats'].append({ return_stats['stats'].append({
'player': x.defender_id if short_output else model_to_dict(x.defender, recurse=False), 'player': this_player,
'team': x.defender_team_id if short_output else model_to_dict(x.defender_team, recurse=False), 'team': x.defender_team_id if short_output else model_to_dict(x.defender_team, recurse=False),
'pos': this_pos, 'pos': this_pos,
'x-ch': x.sum_chances, 'x-ch': x.sum_chances,