diff --git a/app/routers_v2/battingcardratings.py b/app/routers_v2/battingcardratings.py index f945c56..4196dc8 100644 --- a/app/routers_v2/battingcardratings.py +++ b/app/routers_v2/battingcardratings.py @@ -145,6 +145,7 @@ async def get_card_ratings( vs_hand: Literal["R", "L", "vR", "vL"] = None, short_output: bool = False, csv: bool = False, + limit: int = 100, ): this_team = Team.get_or_none(Team.id == team_id) logging.debug(f"Team: {this_team} / has_guide: {this_team.has_guide}") @@ -178,6 +179,8 @@ async def get_card_ratings( ) all_ratings = all_ratings.where(BattingCardRatings.battingcard << set_cards) + all_ratings = all_ratings.limit(max(0, min(limit, 500))) + if csv: # return_val = query_to_csv(all_ratings) return_vals = [model_to_dict(x) for x in all_ratings] @@ -281,7 +284,7 @@ def get_scouting_dfs(cardset_id: list = None): ) ] ), - name=f"Arm OF", + name="Arm OF", ) ) series_list.append( @@ -292,7 +295,7 @@ def get_scouting_dfs(cardset_id: list = None): for x in positions.where(CardPosition.position == "C") ] ), - name=f"Arm C", + name="Arm C", ) ) series_list.append( @@ -303,7 +306,7 @@ def get_scouting_dfs(cardset_id: list = None): for x in positions.where(CardPosition.position == "C") ] ), - name=f"PB C", + name="PB C", ) ) series_list.append( @@ -314,7 +317,7 @@ def get_scouting_dfs(cardset_id: list = None): for x in positions.where(CardPosition.position == "C") ] ), - name=f"Throw C", + name="Throw C", ) ) logging.debug(f"series_list: {series_list}") @@ -334,9 +337,9 @@ async def get_card_scouting(team_id: int, ts: str): "https://ko-fi.com/manticorum/shop" ) - if os.path.isfile(f"storage/batting-ratings.csv"): + if os.path.isfile("storage/batting-ratings.csv"): return FileResponse( - path=f"storage/batting-ratings.csv", + path="storage/batting-ratings.csv", media_type="text/csv", # headers=headers ) @@ -354,7 +357,7 @@ async def post_calc_scouting(token: str = Depends(oauth2_scheme)): status_code=401, detail="You are not authorized to calculate card ratings." ) - logging.warning(f"Re-calculating batting ratings\n\n") + logging.warning("Re-calculating batting ratings\n\n") output = get_scouting_dfs() first = ["player_id", "player_name", "cardset_name", "rarity", "hand", "variant"] @@ -370,9 +373,9 @@ async def post_calc_scouting(token: str = Depends(oauth2_scheme)): @router.get("/basic") async def get_basic_scouting(cardset_id: list = Query(default=None)): - if os.path.isfile(f"storage/batting-basic.csv"): + if os.path.isfile("storage/batting-basic.csv"): return FileResponse( - path=f"storage/batting-basic.csv", + path="storage/batting-basic.csv", media_type="text/csv", # headers=headers ) @@ -390,7 +393,7 @@ async def post_calc_basic(token: str = Depends(oauth2_scheme)): status_code=401, detail="You are not authorized to calculate basic ratings." ) - logging.warning(f"Re-calculating basic batting ratings\n\n") + logging.warning("Re-calculating basic batting ratings\n\n") raw_data = get_scouting_dfs() logging.debug(f"output: {raw_data}") @@ -667,9 +670,11 @@ async def get_player_ratings( if variant is not None: all_cards = all_cards.where(BattingCard.variant << variant) - all_ratings = BattingCardRatings.select().where( - BattingCardRatings.battingcard << all_cards - ).order_by(BattingCardRatings.id) + all_ratings = ( + BattingCardRatings.select() + .where(BattingCardRatings.battingcard << all_cards) + .order_by(BattingCardRatings.id) + ) return_val = { "count": all_ratings.count(), diff --git a/app/routers_v2/gamerewards.py b/app/routers_v2/gamerewards.py index 724f12a..0afb6ec 100644 --- a/app/routers_v2/gamerewards.py +++ b/app/routers_v2/gamerewards.py @@ -8,10 +8,7 @@ from ..db_engine import GameRewards, model_to_dict, DoesNotExist from ..dependencies import oauth2_scheme, valid_token -router = APIRouter( - prefix='/api/v2/gamerewards', - tags=['gamerewards'] -) +router = APIRouter(prefix="/api/v2/gamerewards", tags=["gamerewards"]) class GameRewardModel(pydantic.BaseModel): @@ -21,10 +18,15 @@ class GameRewardModel(pydantic.BaseModel): money: Optional[int] = None -@router.get('') +@router.get("") async def v1_gamerewards_get( - name: Optional[str] = None, pack_type_id: Optional[int] = None, player_id: Optional[int] = None, - money: Optional[int] = None, csv: Optional[bool] = None): + name: Optional[str] = None, + pack_type_id: Optional[int] = None, + player_id: Optional[int] = None, + money: Optional[int] = None, + csv: Optional[bool] = None, + limit: int = 100, +): all_rewards = GameRewards.select().order_by(GameRewards.id) # if all_rewards.count() == 0: @@ -40,61 +42,76 @@ async def v1_gamerewards_get( if money is not None: all_rewards = all_rewards.where(GameRewards.money == money) + limit = max(0, min(limit, 500)) + all_rewards = all_rewards.limit(limit) + if csv: - data_list = [['id', 'pack_type_id', 'player_id', 'money']] + data_list = [["id", "pack_type_id", "player_id", "money"]] for line in all_rewards: - data_list.append([ - line.id, line.pack_type_id if line.pack_type else None, line.player_id if line.player else None, - line.money - ]) + data_list.append( + [ + line.id, + line.pack_type_id if line.pack_type else None, + line.player_id if line.player else None, + line.money, + ] + ) return_val = DataFrame(data_list).to_csv(header=False, index=False) - return Response(content=return_val, media_type='text/csv') + return Response(content=return_val, media_type="text/csv") else: - return_val = {'count': all_rewards.count(), 'gamerewards': []} + return_val = {"count": all_rewards.count(), "gamerewards": []} for x in all_rewards: - return_val['gamerewards'].append(model_to_dict(x)) + return_val["gamerewards"].append(model_to_dict(x)) return return_val -@router.get('/{gameaward_id}') +@router.get("/{gameaward_id}") async def v1_gamerewards_get_one(gamereward_id, csv: Optional[bool] = None): try: this_game_reward = GameRewards.get_by_id(gamereward_id) except DoesNotExist: - raise HTTPException(status_code=404, detail=f'No game reward found with id {gamereward_id}') + raise HTTPException( + status_code=404, detail=f"No game reward found with id {gamereward_id}" + ) if csv: data_list = [ - ['id', 'pack_type_id', 'player_id', 'money'], - [this_game_reward.id, this_game_reward.pack_type_id if this_game_reward.pack_type else None, - this_game_reward.player_id if this_game_reward.player else None, this_game_reward.money] + ["id", "pack_type_id", "player_id", "money"], + [ + this_game_reward.id, + this_game_reward.pack_type_id if this_game_reward.pack_type else None, + this_game_reward.player_id if this_game_reward.player else None, + this_game_reward.money, + ], ] return_val = DataFrame(data_list).to_csv(header=False, index=False) - return Response(content=return_val, media_type='text/csv') + return Response(content=return_val, media_type="text/csv") else: return_val = model_to_dict(this_game_reward) return return_val -@router.post('') -async def v1_gamerewards_post(game_reward: GameRewardModel, token: str = Depends(oauth2_scheme)): +@router.post("") +async def v1_gamerewards_post( + game_reward: GameRewardModel, token: str = Depends(oauth2_scheme) +): if not valid_token(token): - logging.warning('Bad Token: [REDACTED]') + logging.warning("Bad Token: [REDACTED]") raise HTTPException( status_code=401, - detail='You are not authorized to post game rewards. This event has been logged.' + detail="You are not authorized to post game rewards. This event has been logged.", ) this_award = GameRewards( name=game_reward.name, pack_type_id=game_reward.pack_type_id, player_id=game_reward.player_id, - money=game_reward.money + money=game_reward.money, ) saved = this_award.save() @@ -104,24 +121,31 @@ async def v1_gamerewards_post(game_reward: GameRewardModel, token: str = Depends else: raise HTTPException( status_code=418, - detail='Well slap my ass and call me a teapot; I could not save that roster' + detail="Well slap my ass and call me a teapot; I could not save that roster", ) -@router.patch('/{game_reward_id}') +@router.patch("/{game_reward_id}") async def v1_gamerewards_patch( - game_reward_id: int, name: Optional[str] = None, pack_type_id: Optional[int] = None, - player_id: Optional[int] = None, money: Optional[int] = None, token: str = Depends(oauth2_scheme)): + game_reward_id: int, + name: Optional[str] = None, + pack_type_id: Optional[int] = None, + player_id: Optional[int] = None, + money: Optional[int] = None, + token: str = Depends(oauth2_scheme), +): if not valid_token(token): - logging.warning('Bad Token: [REDACTED]') + logging.warning("Bad Token: [REDACTED]") raise HTTPException( status_code=401, - detail='You are not authorized to patch gamerewards. This event has been logged.' + detail="You are not authorized to patch gamerewards. This event has been logged.", ) try: this_game_reward = GameRewards.get_by_id(game_reward_id) except DoesNotExist: - raise HTTPException(status_code=404, detail=f'No game reward found with id {game_reward_id}') + raise HTTPException( + status_code=404, detail=f"No game reward found with id {game_reward_id}" + ) if name is not None: this_game_reward.name = name @@ -147,27 +171,32 @@ async def v1_gamerewards_patch( else: raise HTTPException( status_code=418, - detail='Well slap my ass and call me a teapot; I could not save that rarity' + detail="Well slap my ass and call me a teapot; I could not save that rarity", ) -@router.delete('/{gamereward_id}') +@router.delete("/{gamereward_id}") async def v1_gamerewards_delete(gamereward_id, token: str = Depends(oauth2_scheme)): if not valid_token(token): - logging.warning('Bad Token: [REDACTED]') + logging.warning("Bad Token: [REDACTED]") raise HTTPException( status_code=401, - detail='You are not authorized to delete awards. This event has been logged.' + detail="You are not authorized to delete awards. This event has been logged.", ) try: this_award = GameRewards.get_by_id(gamereward_id) except DoesNotExist: - raise HTTPException(status_code=404, detail=f'No award found with id {gamereward_id}') + raise HTTPException( + status_code=404, detail=f"No award found with id {gamereward_id}" + ) count = this_award.delete_instance() if count == 1: - raise HTTPException(status_code=200, detail=f'Game Reward {gamereward_id} has been deleted') + raise HTTPException( + status_code=200, detail=f"Game Reward {gamereward_id} has been deleted" + ) else: - raise HTTPException(status_code=500, detail=f'Game Reward {gamereward_id} was not deleted') - + raise HTTPException( + status_code=500, detail=f"Game Reward {gamereward_id} was not deleted" + )