Add Swagger support

This commit is contained in:
Cal Corum 2024-07-14 13:23:37 -05:00
parent a935688518
commit 4380c26319
22 changed files with 124 additions and 100 deletions

View File

@ -28,6 +28,8 @@ logging.basicConfig(
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
priv_help = False if not os.environ.get('PRIVATE_IN_SCHEMA') else os.environ.get('PRIVATE_IN_SCHEMA').upper()
PRIVATE_IN_SCHEMA = True if priv_help == 'TRUE' else False
def valid_token(token):

View File

@ -3,6 +3,9 @@ import logging
import os
from fastapi import Depends, FastAPI, Request
from fastapi.openapi.docs import get_swagger_ui_html
from fastapi.openapi.utils import get_openapi
# from fastapi.openapi.docs import get_swagger_ui_html
# from fastapi.openapi.utils import get_openapi
@ -19,7 +22,10 @@ logging.basicConfig(
)
app = FastAPI(
responses={404: {'description': 'Not found'}}
root_path='/api',
responses={404: {'description': 'Not found'}},
docs_url='/api/docs',
redoc_url='/api/redoc'
)
@ -50,15 +56,16 @@ app.include_router(divisions.router)
logging.info(f'Loaded all routers.')
# @app.get("/docs", include_in_schema=False)
# async def get_docs(req: Request):
# print(req.scope)
# return get_swagger_ui_html(openapi_url=req.scope.get('root_path')+'/openapi.json', title='Swagger')
#
#
# @app.get("/openapi.json", include_in_schema=False)
# async def openapi():
# return get_openapi(title='SBa Dev API', version=f'0.1.1', routes=app.routes)
@app.get("/api/docs", include_in_schema=False)
async def get_docs(req: Request):
print(req.scope)
return get_swagger_ui_html(openapi_url=req.scope.get('root_path')+'/openapi.json', title='Swagger')
@app.get("/api/openapi.json", include_in_schema=False)
async def openapi():
return get_openapi(title='SBa API Docs', version=f'0.1.1', routes=app.routes)
# @app.get("/api")

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, Award, Team, Player, Manager, model_to_dict, chunked, fn
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -82,7 +82,7 @@ async def get_one_award(award_id: int, short_output: Optional[bool] = False):
return model_to_dict(this_award, recurse=not short_output)
@router.patch('/{award_id}')
@router.patch('/{award_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_award(
award_id: int, name: Optional[str] = None, season: Optional[int] = None, timing: Optional[str] = None,
image: Optional[str] = None, manager1_id: Optional[int] = None, manager2_id: Optional[int] = None,
@ -122,7 +122,7 @@ async def patch_award(
raise HTTPException(status_code=500, detail=f'Unable to patch award {award_id}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_award(award_list: AwardList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_player - Bad Token: {token}')
@ -149,7 +149,7 @@ async def post_award(award_list: AwardList, token: str = Depends(oauth2_scheme))
return f'Inserted {len(new_awards)} awards'
@router.delete('/{award_id}')
@router.delete('/{award_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_award(award_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_player - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, BattingStat, Team, Player, Current, model_to_dict, chunked, fn, per_season_weeks
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -267,7 +267,7 @@ async def get_totalstats(
# pass # Keep Career Stats table and recalculate after posting stats
@router.patch('/{stat_id}')
@router.patch('/{stat_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_batstats(stat_id: int, new_stats: BatStatModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_batstats - Bad Token: {token}')
@ -282,7 +282,7 @@ async def patch_batstats(stat_id: int, new_stats: BatStatModel, token: str = Dep
return r_stat
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_batstats(s_list: BatStatList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_batstats - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, Current, model_to_dict
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -48,7 +48,7 @@ async def get_current(season: Optional[int] = None):
return None
@router.patch('/{current_id}')
@router.patch('/{current_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_current(
current_id: int, season: Optional[int] = None, week: Optional[int] = None, freeze: Optional[bool] = None,
transcount: Optional[int] = None, bstatcount: Optional[int] = None, pstatcount: Optional[int] = None,
@ -95,7 +95,7 @@ async def patch_current(
raise HTTPException(status_code=500, detail=f'Unable to patch current {current_id}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_current(new_current: CurrentModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_current - Bad Token: {token}')
@ -112,7 +112,7 @@ async def post_current(new_current: CurrentModel, token: str = Depends(oauth2_sc
raise HTTPException(status_code=500, detail=f'Unable to post season {new_current.season} current')
@router.delete('/{current_id}')
@router.delete('/{current_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_current(current_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_current - Bad Token: {token}')

View File

@ -5,7 +5,7 @@ import logging
import pydantic
from ..db_engine import db, Decision, StratGame, Player, model_to_dict, chunked, fn, Team
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -42,6 +42,11 @@ class DecisionList(pydantic.BaseModel):
decisions: List[DecisionModel]
class DecisionReturnList(pydantic.BaseModel):
count: int
decisions: list[DecisionModel]
@router.get('')
async def get_decisions(
season: list = Query(default=None), week: list = Query(default=None), game_num: list = Query(default=None),
@ -120,7 +125,7 @@ async def get_decisions(
return return_dec
@router.patch('/{decision_id}')
@router.patch('/{decision_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_decision(
decision_id: int, win: Optional[int] = None, loss: Optional[int] = None, hold: Optional[int] = None,
save: Optional[int] = None, b_save: Optional[int] = None, irunners: Optional[int] = None,
@ -163,7 +168,7 @@ async def patch_decision(
raise HTTPException(status_code=500, detail=f'Unable to patch decision {decision_id}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_decisions(dec_list: DecisionList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_decisions - Bad Token: {token}')
@ -186,7 +191,7 @@ async def post_decisions(dec_list: DecisionList, token: str = Depends(oauth2_sch
return f'Inserted {len(new_dec)} decisions'
@router.delete('/{decision_id}')
@router.delete('/{decision_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_decision(decision_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_decision - Bad Token: {token}')
@ -206,7 +211,7 @@ async def delete_decision(decision_id: int, token: str = Depends(oauth2_scheme))
raise HTTPException(status_code=500, detail=f'Decision {decision_id} could not be deleted')
@router.delete('/game/{game_id}')
@router.delete('/game/{game_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_decisions_game(game_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_decisions_game - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, Division, Team, model_to_dict, chunked, fn
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -61,7 +61,7 @@ async def get_one_division(division_id: int):
return r_div
@router.patch('/{division_id}')
@router.patch('/{division_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_division(
division_id: int, div_name: Optional[str] = None, div_abbrev: Optional[str] = None,
lg_name: Optional[str] = None, lg_abbrev: Optional[str] = None, token: str = Depends(oauth2_scheme)):
@ -92,7 +92,7 @@ async def patch_division(
raise HTTPException(status_code=500, detail=f'Unable to patch division {division_id}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_division(new_division: DivisionModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_division - Bad Token: {token}')
@ -109,7 +109,7 @@ async def post_division(new_division: DivisionModel, token: str = Depends(oauth2
raise HTTPException(status_code=500, detail=f'Unable to post division')
@router.delete('/{division_id}')
@router.delete('/{division_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_division(division_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_division - Bad Token: {token}')

View File

@ -6,7 +6,7 @@ import logging
import pydantic
from ..db_engine import db, DraftData, model_to_dict
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -41,7 +41,7 @@ async def get_draftdata():
raise HTTPException(status_code=404, detail=f'No draft data found')
@router.patch('/{data_id}')
@router.patch('/{data_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_draftdata(
data_id: int, currentpick: Optional[int] = None, timer: Optional[bool] = None,
pick_deadline: Optional[datetime.datetime] = None, result_channel: Optional[int] = None,

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, DraftList, Team, model_to_dict, chunked
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -30,7 +30,7 @@ class DraftListList(pydantic.BaseModel):
draft_list: List[DraftListModel]
@router.get('')
@router.get('', include_in_schema=PRIVATE_IN_SCHEMA)
async def get_draftlist(
season: Optional[int], team_id: list = Query(default=None), token: str = Depends(oauth2_scheme)):
if not valid_token(token):
@ -53,7 +53,7 @@ async def get_draftlist(
return r_list
@router.get('/team/{team_id}')
@router.get('/team/{team_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def get_team_draftlist(team_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_draftlist - Bad Token: {token}')
@ -73,7 +73,7 @@ async def get_team_draftlist(team_id: int, token: str = Depends(oauth2_scheme)):
return r_list
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_draftlist(draft_list: DraftListList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_draftlist - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, DraftPick, Team, model_to_dict, chunked
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -31,6 +31,11 @@ class DraftPickList(pydantic.BaseModel):
picks: List[DraftPickModel]
class DraftPickReturnList(pydantic.BaseModel):
count: int
picks: list[DraftPickModel]
@router.get('')
async def get_picks(
season: int, owner_team_abbrev: list = Query(default=None), orig_team_abbrev: list = Query(default=None),
@ -114,7 +119,7 @@ async def get_one_pick(pick_id: int, short_output: Optional[bool] = False):
return r_pick
@router.patch('/{pick_id}')
@router.patch('/{pick_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_pick(pick_id: int, new_pick: DraftPickModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_pick - Bad Token: {token}')
@ -129,7 +134,7 @@ async def patch_pick(pick_id: int, new_pick: DraftPickModel, token: str = Depend
return r_pick
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_picks(p_list: DraftPickList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_picks - Bad Token: {token}')
@ -155,7 +160,7 @@ async def post_picks(p_list: DraftPickList, token: str = Depends(oauth2_scheme))
return f'Inserted {len(new_picks)} picks'
@router.delete('/{pick_id}')
@router.delete('/{pick_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_pick(pick_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_pick - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, Injury, Player, model_to_dict, fn
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -67,7 +67,7 @@ async def get_injuries(
return return_injuries
@router.patch('/{injury_id}')
@router.patch('/{injury_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_injury(injury_id: int, is_active: Optional[bool] = None, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_injury - Bad Token: {token}')
@ -90,7 +90,7 @@ async def patch_injury(injury_id: int, is_active: Optional[bool] = None, token:
raise HTTPException(status_code=500, detail=f'Unable to patch injury {injury_id}')
@router.post(f'')
@router.post(f'', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_injury(new_injury: InjuryModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_injury - Bad Token: {token}')
@ -107,7 +107,7 @@ async def post_injury(new_injury: InjuryModel, token: str = Depends(oauth2_schem
raise HTTPException(status_code=500, detail=f'Unable to post injury')
@router.delete('/{injury_id}')
@router.delete('/{injury_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_injury(injury_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_injury - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, Keeper, Player, model_to_dict, chunked, fn
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -50,7 +50,7 @@ async def get_keepers(
return return_keepers
@router.patch('/{keeper_id}')
@router.patch('/{keeper_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_keeper(
keeper_id: int, season: Optional[int] = None, team_id: Optional[int] = None, player_id: Optional[int] = None,
token: str = Depends(oauth2_scheme)):
@ -78,7 +78,7 @@ async def patch_keeper(
raise HTTPException(status_code=500, detail=f'Unable to patch keeper {keeper_id}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_keepers(k_list: KeeperList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_keepers - Bad Token: {token}')
@ -96,7 +96,7 @@ async def post_keepers(k_list: KeeperList, token: str = Depends(oauth2_scheme)):
return f'Inserted {len(new_keepers)} keepers'
@router.delete('/{keeper_id}')
@router.delete('/{keeper_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_keeper(keeper_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_keeper - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, Manager, Team, Current, model_to_dict, fn
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -90,7 +90,7 @@ async def get_one_manager(manager_id: int, short_output: Optional[bool] = False)
raise HTTPException(status_code=404, detail=f'Manager {manager_id} not found')
@router.patch('/{manager_id}')
@router.patch('/{manager_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_manager(
manager_id: int, name: Optional[str] = None, image: Optional[str] = None, headline: Optional[str] = None,
bio: Optional[str] = None, token: str = Depends(oauth2_scheme)):
@ -121,7 +121,7 @@ async def patch_manager(
raise HTTPException(status_code=500, detail=f'Unable to patch manager {this_manager}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_manager(new_manager: ManagerModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_manager - Bad Token: {token}')
@ -138,7 +138,7 @@ async def post_manager(new_manager: ManagerModel, token: str = Depends(oauth2_sc
raise HTTPException(status_code=500, detail=f'Unable to post manager {this_manager.name}')
@router.delete('/{manager_id}')
@router.delete('/{manager_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_manager(manager_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_manager - Bad Token: {token}')

View File

@ -7,7 +7,7 @@ import logging
import pydantic
from ..db_engine import db, PitchingStat, Team, Player, Current, model_to_dict, chunked, fn, per_season_weeks
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -232,7 +232,7 @@ async def get_totalstats(
return return_stats
@router.patch('/{stat_id}')
@router.patch('/{stat_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_pitstats(stat_id: int, new_stats: PitStatModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_pitstats - Bad Token: {token}')
@ -247,7 +247,7 @@ async def patch_pitstats(stat_id: int, new_stats: PitStatModel, token: str = Dep
return r_stat
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_pitstats(s_list: PitStatList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_pitstats - Bad Token: {token}')

View File

@ -5,7 +5,7 @@ import pydantic
from pandas import DataFrame
from ..db_engine import db, Player, model_to_dict, chunked, fn, complex_data_to_csv
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -99,7 +99,8 @@ async def get_players(
line.name, line.wara, line.image, line.image2, line.team.abbrev, line.season, line.pitcher_injury,
line.pos_1, line.pos_2, line.pos_3, line.pos_4, line.pos_5, line.pos_6, line.pos_7, line.pos_8,
line.last_game, line.last_game2, line.il_return, line.demotion_week, line.headshot,
line.vanity_card, line.strat_code.replace(",", "-_-"), line.bbref_id, line.injury_rating, line.id
line.vanity_card, line.strat_code.replace(",", "-_-") if line.strat_code is not None else "",
line.bbref_id, line.injury_rating, line.id
]
)
return_players = {
@ -133,7 +134,7 @@ async def get_one_player(player_id: int, short_output: Optional[bool] = False):
return r_player
@router.put('/{player_id}')
@router.put('/{player_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def put_player(
player_id: int, new_player: PlayerModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
@ -150,7 +151,7 @@ async def put_player(
return r_player
@router.patch('/{player_id}')
@router.patch('/{player_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_player(
player_id: int, token: str = Depends(oauth2_scheme), name: Optional[str] = None,
wara: Optional[float] = None, image: Optional[str] = None, image2: Optional[str] = None,
@ -230,7 +231,7 @@ async def patch_player(
raise HTTPException(status_code=500, detail=f'Unable to patch player {player_id}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_players(p_list: PlayerList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_players - Bad Token: {token}')
@ -256,7 +257,7 @@ async def post_players(p_list: PlayerList, token: str = Depends(oauth2_scheme)):
return f'Inserted {len(new_players)} players'
@router.delete('/{player_id}')
@router.delete('/{player_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_player(player_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_player - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, Result, Team, model_to_dict, chunked
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -89,7 +89,7 @@ async def get_one_result(result_id: int, short_output: Optional[bool] = False):
return r_result
@router.patch('/{result_id}')
@router.patch('/{result_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_result(
result_id: int, week_num: Optional[int] = None, game_num: Optional[int] = None,
away_team_id: Optional[int] = None, home_team_id: Optional[int] = None, away_score: Optional[int] = None,
@ -136,7 +136,7 @@ async def patch_result(
raise HTTPException(status_code=500, detail=f'Unable to patch result {result_id}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_results(result_list: ResultList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_player - Bad Token: {token}')
@ -159,7 +159,7 @@ async def post_results(result_list: ResultList, token: str = Depends(oauth2_sche
return f'Inserted {len(new_results)} results'
@router.delete('/{result_id}')
@router.delete('/{result_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_result(result_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_result - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, Schedule, Team, model_to_dict, chunked
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -84,7 +84,7 @@ async def get_one_schedule(schedule_id: int):
return r_sched
@router.patch('/{schedule_id}')
@router.patch('/{schedule_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_schedule(
schedule_id: int, week: list = Query(default=None), awayteam_id: Optional[int] = None,
hometeam_id: Optional[int] = None, gamecount: Optional[int] = None, season: Optional[int] = None,
@ -121,7 +121,7 @@ async def patch_schedule(
raise HTTPException(status_code=500, detail=f'Unable to patch schedule {schedule_id}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_schedules(sched_list: ScheduleList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_schedules - Bad Token: {token}')
@ -144,7 +144,7 @@ async def post_schedules(sched_list: ScheduleList, token: str = Depends(oauth2_s
return f'Inserted {len(new_sched)} schedules'
@router.delete('/{schedule_id}')
@router.delete('/{schedule_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_schedule(schedule_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_schedule - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic
from ..db_engine import db, Standings, Team, Division, model_to_dict, chunked, fn
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -68,7 +68,7 @@ async def get_team_standings(team_id: int):
return model_to_dict(this_stan)
@router.patch('/{stan_id}')
@router.patch('/{stan_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_standings(
stan_id, wins: Optional[int] = None, losses: Optional[int] = None, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
@ -92,7 +92,7 @@ async def patch_standings(
return model_to_dict(this_stan)
@router.post('/s{season}/recalculate')
@router.post('/s{season}/recalculate', include_in_schema=PRIVATE_IN_SCHEMA)
async def recalculate_standings(season: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'recalculate_standings - Bad Token: {token}')

View File

@ -1,11 +1,11 @@
from fastapi import APIRouter, Depends, HTTPException, Query
from typing import List, Optional, Literal
from typing import List, Optional, Literal, Any
import copy
import logging
import pydantic
from ..db_engine import db, StratGame, Team, model_to_dict, chunked, fn
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -45,7 +45,7 @@ async def get_games(
team1_id: list = Query(default=None), team2_id: list = Query(default=None), played: Optional[bool] = None,
away_manager_id: list = Query(default=None), home_manager_id: list = Query(default=None),
manager1_id: list = Query(default=None), manager2_id: list = Query(default=None),
division_id: Optional[int] = None, short_output: Optional[bool] = False, sort: Optional[str] = None):
division_id: Optional[int] = None, short_output: Optional[bool] = False, sort: Optional[str] = None) -> Any:
all_games = StratGame.select()
if season is not None:
@ -108,7 +108,7 @@ async def get_games(
@router.get('/{game_id}')
async def get_one_game(game_id: int):
async def get_one_game(game_id: int) -> Any:
this_game = StratGame.get_or_none(StratGame.id == game_id)
if not this_game:
db.close()
@ -119,11 +119,11 @@ async def get_one_game(game_id: int):
return g_result
@router.patch('/{game_id}')
@router.patch('/{game_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_game(
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,
token: str = Depends(oauth2_scheme), scorecard_url: Optional[str] = None):
token: str = Depends(oauth2_scheme), scorecard_url: Optional[str] = None) -> Any:
if not valid_token(token):
logging.warning(f'patch_game - Bad Token: {token}')
raise HTTPException(status_code=401, detail='Unauthorized')
@ -155,8 +155,8 @@ async def patch_game(
raise HTTPException(status_code=500, detail=f'Unable to patch game {game_id}')
@router.post('')
async def post_games(game_list: GameList, token: str = Depends(oauth2_scheme)):
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_games(game_list: GameList, token: str = Depends(oauth2_scheme)) -> Any:
if not valid_token(token):
logging.warning(f'post_games - Bad Token: {token}')
raise HTTPException(status_code=401, detail='Unauthorized')
@ -178,8 +178,8 @@ async def post_games(game_list: GameList, token: str = Depends(oauth2_scheme)):
return f'Inserted {len(new_games)} games'
@router.post('/wipe/{game_id}')
async def wipe_game(game_id: int, token: str = Depends(oauth2_scheme)):
@router.post('/wipe/{game_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def wipe_game(game_id: int, token: str = Depends(oauth2_scheme)) -> Any:
if not valid_token(token):
logging.warning(f'wipe_game - Bad Token: {token}')
raise HTTPException(status_code=401, detail='Unauthorized')
@ -204,8 +204,8 @@ async def wipe_game(game_id: int, token: str = Depends(oauth2_scheme)):
raise HTTPException(status_code=500, detail=f'Unable to wipe game {game_id}')
@router.delete('/{game_id}')
async def delete_game(game_id: int, token: str = Depends(oauth2_scheme)):
@router.delete('/{game_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_game(game_id: int, token: str = Depends(oauth2_scheme)) -> Any:
if not valid_token(token):
logging.warning(f'delete_game - Bad Token: {token}')
raise HTTPException(status_code=401, detail='Unauthorized')

View File

@ -5,7 +5,7 @@ from pydantic import BaseModel, validator
from ..db_engine import db, StratPlay, StratGame, Team, Player, Decision, model_to_dict, chunked, fn, SQL, \
complex_data_to_csv
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -256,6 +256,10 @@ async def get_plays(
all_plays = all_plays.order_by(-fn.ABS(StratPlay.wpa))
elif sort == 'wpa-asc':
all_plays = all_plays.order_by(fn.ABS(StratPlay.wpa))
elif sort == 're24-desc':
all_plays = all_plays.order_by(-fn.ABS(StratPlay.re24_primary))
elif sort == 're24-asc':
all_plays = all_plays.order_by(fn.ABS(StratPlay.re24_primary))
elif sort == 'newest':
all_plays = all_plays.order_by(StratPlay.game_id.desc(), StratPlay.play_num.desc())
elif sort == 'oldest':
@ -1025,7 +1029,7 @@ async def get_one_play(play_id: int):
return r_play
@router.patch('/{play_id}')
@router.patch('/{play_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_play(play_id: int, new_play: PlayModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'patch_play - Bad Token: {token}')
@ -1041,7 +1045,7 @@ async def patch_play(play_id: int, new_play: PlayModel, token: str = Depends(oau
return r_play
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_plays(p_list: PlayList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_plays - Bad Token: {token}')
@ -1080,7 +1084,7 @@ async def post_plays(p_list: PlayList, token: str = Depends(oauth2_scheme)):
return f'Inserted {len(new_plays)} plays'
@router.delete('/{play_id}')
@router.delete('/{play_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_play(play_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_play - Bad Token: {token}')
@ -1100,7 +1104,7 @@ async def delete_play(play_id: int, token: str = Depends(oauth2_scheme)):
raise HTTPException(status_code=500, detail=f'Play {play_id} could not be deleted')
@router.delete('/game/{game_id}')
@router.delete('/game/{game_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_plays_game(game_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_plays_game - Bad Token: {token}')
@ -1120,7 +1124,7 @@ async def delete_plays_game(game_id: int, token: str = Depends(oauth2_scheme)):
raise HTTPException(status_code=500, detail=f'No plays matching Game ID {game_id} were deleted')
@router.post('/erun-check')
@router.post('/erun-check', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_erun_check(token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_erun_check - Bad Token: {token}')

View File

@ -4,8 +4,8 @@ import copy
import logging
import pydantic
from ..db_engine import db, Team, Manager, Division, model_to_dict, chunked, fn, query_to_csv
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..db_engine import db, Team, Manager, Division, model_to_dict, chunked, fn, query_to_csv, Player
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -88,7 +88,7 @@ async def get_one_team(team_id: int):
return r_team
@router.get('/{team_id}/roster/{which}')
@router.get('/{team_id}/roster/{which}', include_in_schema=PRIVATE_IN_SCHEMA)
async def get_team_roster(team_id: int, which: Literal['current', 'next'], sort: Optional[str] = None):
try:
this_team = Team.get_by_id(team_id)
@ -124,7 +124,7 @@ async def get_team_roster(team_id: int, which: Literal['current', 'next'], sort:
return full_roster
@router.patch('/{team_id}')
@router.patch('/{team_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_team(
team_id: int, manager1_id: Optional[int] = None, manager2_id: Optional[int] = None, gmid: Optional[int] = None,
gmid2: Optional[int] = None, mascot: Optional[str] = None, stadium: Optional[str] = None,
@ -202,7 +202,7 @@ async def patch_team(
raise HTTPException(status_code=500, detail=f'Unable to patch team {team_id}')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_team(team_list: TeamList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_team - Bad Token: {token}')
@ -239,7 +239,7 @@ async def post_team(team_list: TeamList, token: str = Depends(oauth2_scheme)):
return f'Inserted {len(new_teams)} teams'
@router.get('/{team_id}')
@router.get('/{team_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_team(team_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_team - Bad Token: {token}')

View File

@ -5,7 +5,7 @@ import logging
import pydantic
from ..db_engine import db, Transaction, Team, Player, model_to_dict, chunked, fn
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA
from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig(
filename=LOG_DATA['filename'],
@ -91,7 +91,7 @@ async def get_transactions(
return return_trans
@router.patch('/{move_id}')
@router.patch('/{move_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_transactions(
move_id, token: str = Depends(oauth2_scheme), frozen: Optional[bool] = None, cancelled: Optional[bool] = None):
if not valid_token(token):
@ -116,7 +116,7 @@ async def patch_transactions(
raise HTTPException(status_code=200, detail=f'Updated {these_moves.count()} transactions')
@router.post('')
@router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_transactions(moves: TransactionList, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'post_transactions - Bad Token: {token}')
@ -142,7 +142,7 @@ async def post_transactions(moves: TransactionList, token: str = Depends(oauth2_
raise HTTPException(status_code=200, detail=f'{len(all_moves)} transactions have been added')
@router.delete('/{move_id}')
@router.delete('/{move_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_transactions(move_id, token: str = Depends(oauth2_scheme)):
if not valid_token(token):
logging.warning(f'delete_transactions - Bad Token: {token}')