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") 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): def valid_token(token):

View File

@ -3,6 +3,9 @@ import logging
import os import os
from fastapi import Depends, FastAPI, Request 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.docs import get_swagger_ui_html
# from fastapi.openapi.utils import get_openapi # from fastapi.openapi.utils import get_openapi
@ -19,7 +22,10 @@ logging.basicConfig(
) )
app = FastAPI( 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.') logging.info(f'Loaded all routers.')
# @app.get("/docs", include_in_schema=False)
# async def get_docs(req: Request): @app.get("/api/docs", include_in_schema=False)
# print(req.scope) async def get_docs(req: Request):
# return get_swagger_ui_html(openapi_url=req.scope.get('root_path')+'/openapi.json', title='Swagger') 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(): @app.get("/api/openapi.json", include_in_schema=False)
# return get_openapi(title='SBa Dev API', version=f'0.1.1', routes=app.routes) async def openapi():
return get_openapi(title='SBa API Docs', version=f'0.1.1', routes=app.routes)
# @app.get("/api") # @app.get("/api")

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Award, Team, Player, Manager, model_to_dict, chunked, fn 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( logging.basicConfig(
filename=LOG_DATA['filename'], 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) 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( async def patch_award(
award_id: int, name: Optional[str] = None, season: Optional[int] = None, timing: Optional[str] = None, 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, 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}') 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)): async def post_award(award_list: AwardList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_player - Bad 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' 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)): async def delete_award(award_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_player - Bad Token: {token}') logging.warning(f'patch_player - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, BattingStat, Team, Player, Current, model_to_dict, chunked, fn, per_season_weeks 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -267,7 +267,7 @@ async def get_totalstats(
# pass # Keep Career Stats table and recalculate after posting stats # 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)): async def patch_batstats(stat_id: int, new_stats: BatStatModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_batstats - Bad 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 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)): async def post_batstats(s_list: BatStatList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_batstats - Bad Token: {token}') logging.warning(f'post_batstats - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Current, model_to_dict 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -48,7 +48,7 @@ async def get_current(season: Optional[int] = None):
return None return None
@router.patch('/{current_id}') @router.patch('/{current_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_current( async def patch_current(
current_id: int, season: Optional[int] = None, week: Optional[int] = None, freeze: Optional[bool] = None, 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, 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}') 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)): async def post_current(new_current: CurrentModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_current - Bad 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') 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)): async def delete_current(current_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_current - Bad Token: {token}') logging.warning(f'patch_current - Bad Token: {token}')

View File

@ -5,7 +5,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Decision, StratGame, Player, model_to_dict, chunked, fn, Team 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -42,6 +42,11 @@ class DecisionList(pydantic.BaseModel):
decisions: List[DecisionModel] decisions: List[DecisionModel]
class DecisionReturnList(pydantic.BaseModel):
count: int
decisions: list[DecisionModel]
@router.get('') @router.get('')
async def get_decisions( async def get_decisions(
season: list = Query(default=None), week: list = Query(default=None), game_num: list = Query(default=None), 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 return return_dec
@router.patch('/{decision_id}') @router.patch('/{decision_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_decision( async def patch_decision(
decision_id: int, win: Optional[int] = None, loss: Optional[int] = None, hold: Optional[int] = None, 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, 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}') 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)): async def post_decisions(dec_list: DecisionList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_decisions - Bad 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' 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)): async def delete_decision(decision_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_decision - Bad 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') 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)): async def delete_decisions_game(game_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_decisions_game - Bad Token: {token}') logging.warning(f'delete_decisions_game - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Division, Team, model_to_dict, chunked, fn 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -61,7 +61,7 @@ async def get_one_division(division_id: int):
return r_div return r_div
@router.patch('/{division_id}') @router.patch('/{division_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_division( async def patch_division(
division_id: int, div_name: Optional[str] = None, div_abbrev: Optional[str] = None, 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)): 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}') 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)): async def post_division(new_division: DivisionModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_division - Bad 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') 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)): async def delete_division(division_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_division - Bad Token: {token}') logging.warning(f'delete_division - Bad Token: {token}')

View File

@ -6,7 +6,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, DraftData, model_to_dict 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -41,7 +41,7 @@ async def get_draftdata():
raise HTTPException(status_code=404, detail=f'No draft data found') 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( async def patch_draftdata(
data_id: int, currentpick: Optional[int] = None, timer: Optional[bool] = None, data_id: int, currentpick: Optional[int] = None, timer: Optional[bool] = None,
pick_deadline: Optional[datetime.datetime] = None, result_channel: Optional[int] = None, pick_deadline: Optional[datetime.datetime] = None, result_channel: Optional[int] = None,

View File

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

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, DraftPick, Team, model_to_dict, chunked 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -31,6 +31,11 @@ class DraftPickList(pydantic.BaseModel):
picks: List[DraftPickModel] picks: List[DraftPickModel]
class DraftPickReturnList(pydantic.BaseModel):
count: int
picks: list[DraftPickModel]
@router.get('') @router.get('')
async def get_picks( async def get_picks(
season: int, owner_team_abbrev: list = Query(default=None), orig_team_abbrev: list = Query(default=None), 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 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)): async def patch_pick(pick_id: int, new_pick: DraftPickModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_pick - Bad 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 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)): async def post_picks(p_list: DraftPickList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_picks - Bad 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' 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)): async def delete_pick(pick_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_pick - Bad Token: {token}') logging.warning(f'delete_pick - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Injury, Player, model_to_dict, fn 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -67,7 +67,7 @@ async def get_injuries(
return return_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)): async def patch_injury(injury_id: int, is_active: Optional[bool] = None, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_injury - Bad 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}') 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)): async def post_injury(new_injury: InjuryModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_injury - Bad 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') 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)): async def delete_injury(injury_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_injury - Bad Token: {token}') logging.warning(f'delete_injury - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Keeper, Player, model_to_dict, chunked, fn 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -50,7 +50,7 @@ async def get_keepers(
return return_keepers return return_keepers
@router.patch('/{keeper_id}') @router.patch('/{keeper_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_keeper( async def patch_keeper(
keeper_id: int, season: Optional[int] = None, team_id: Optional[int] = None, player_id: Optional[int] = None, keeper_id: int, season: Optional[int] = None, team_id: Optional[int] = None, player_id: Optional[int] = None,
token: str = Depends(oauth2_scheme)): 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}') 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)): async def post_keepers(k_list: KeeperList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_keepers - Bad 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' 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)): async def delete_keeper(keeper_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_keeper - Bad Token: {token}') logging.warning(f'delete_keeper - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Manager, Team, Current, model_to_dict, fn 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( logging.basicConfig(
filename=LOG_DATA['filename'], 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') 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( async def patch_manager(
manager_id: int, name: Optional[str] = None, image: Optional[str] = None, headline: Optional[str] = None, manager_id: int, name: Optional[str] = None, image: Optional[str] = None, headline: Optional[str] = None,
bio: Optional[str] = None, token: str = Depends(oauth2_scheme)): 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}') 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)): async def post_manager(new_manager: ManagerModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_manager - Bad 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}') 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)): async def delete_manager(manager_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_manager - Bad Token: {token}') logging.warning(f'delete_manager - Bad Token: {token}')

View File

@ -7,7 +7,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, PitchingStat, Team, Player, Current, model_to_dict, chunked, fn, per_season_weeks 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -232,7 +232,7 @@ async def get_totalstats(
return return_stats 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)): async def patch_pitstats(stat_id: int, new_stats: PitStatModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_pitstats - Bad 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 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)): async def post_pitstats(s_list: PitStatList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_pitstats - Bad Token: {token}') logging.warning(f'post_pitstats - Bad Token: {token}')

View File

@ -5,7 +5,7 @@ import pydantic
from pandas import DataFrame from pandas import DataFrame
from ..db_engine import db, Player, model_to_dict, chunked, fn, complex_data_to_csv 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( logging.basicConfig(
filename=LOG_DATA['filename'], 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.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.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.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 = { return_players = {
@ -133,7 +134,7 @@ async def get_one_player(player_id: int, short_output: Optional[bool] = False):
return r_player return r_player
@router.put('/{player_id}') @router.put('/{player_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def put_player( async def put_player(
player_id: int, new_player: PlayerModel, token: str = Depends(oauth2_scheme)): player_id: int, new_player: PlayerModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
@ -150,7 +151,7 @@ async def put_player(
return r_player return r_player
@router.patch('/{player_id}') @router.patch('/{player_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_player( async def patch_player(
player_id: int, token: str = Depends(oauth2_scheme), name: Optional[str] = None, player_id: int, token: str = Depends(oauth2_scheme), name: Optional[str] = None,
wara: Optional[float] = None, image: Optional[str] = None, image2: 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}') 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)): async def post_players(p_list: PlayerList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_players - Bad 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' 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)): async def delete_player(player_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_player - Bad Token: {token}') logging.warning(f'delete_player - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Result, Team, model_to_dict, chunked 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -89,7 +89,7 @@ async def get_one_result(result_id: int, short_output: Optional[bool] = False):
return r_result return r_result
@router.patch('/{result_id}') @router.patch('/{result_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_result( async def patch_result(
result_id: int, week_num: Optional[int] = None, game_num: Optional[int] = None, 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, 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}') 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)): async def post_results(result_list: ResultList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_player - Bad 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' 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)): async def delete_result(result_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_result - Bad Token: {token}') logging.warning(f'delete_result - Bad Token: {token}')

View File

@ -4,7 +4,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Schedule, Team, model_to_dict, chunked 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -84,7 +84,7 @@ async def get_one_schedule(schedule_id: int):
return r_sched return r_sched
@router.patch('/{schedule_id}') @router.patch('/{schedule_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_schedule( async def patch_schedule(
schedule_id: int, week: list = Query(default=None), awayteam_id: Optional[int] = None, 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, 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}') 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)): async def post_schedules(sched_list: ScheduleList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_schedules - Bad 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' 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)): async def delete_schedule(schedule_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_schedule - Bad Token: {token}') logging.warning(f'delete_schedule - Bad Token: {token}')

View File

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

View File

@ -1,11 +1,11 @@
from fastapi import APIRouter, Depends, HTTPException, Query from fastapi import APIRouter, Depends, HTTPException, Query
from typing import List, Optional, Literal from typing import List, Optional, Literal, Any
import copy import copy
import logging import logging
import pydantic import pydantic
from ..db_engine import db, StratGame, Team, model_to_dict, chunked, fn 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( logging.basicConfig(
filename=LOG_DATA['filename'], 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, 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), 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), 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() all_games = StratGame.select()
if season is not None: if season is not None:
@ -108,7 +108,7 @@ async def get_games(
@router.get('/{game_id}') @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) this_game = StratGame.get_or_none(StratGame.id == game_id)
if not this_game: if not this_game:
db.close() db.close()
@ -119,11 +119,11 @@ async def get_one_game(game_id: int):
return g_result return g_result
@router.patch('/{game_id}') @router.patch('/{game_id}', include_in_schema=PRIVATE_IN_SCHEMA)
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), scorecard_url: Optional[str] = None): token: str = Depends(oauth2_scheme), scorecard_url: Optional[str] = None) -> Any:
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')
@ -155,8 +155,8 @@ async def patch_game(
raise HTTPException(status_code=500, detail=f'Unable to patch game {game_id}') raise HTTPException(status_code=500, detail=f'Unable to patch game {game_id}')
@router.post('') @router.post('', include_in_schema=PRIVATE_IN_SCHEMA)
async def post_games(game_list: GameList, token: str = Depends(oauth2_scheme)): async def post_games(game_list: GameList, token: str = Depends(oauth2_scheme)) -> Any:
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_games - Bad Token: {token}') logging.warning(f'post_games - Bad Token: {token}')
raise HTTPException(status_code=401, detail='Unauthorized') 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' return f'Inserted {len(new_games)} games'
@router.post('/wipe/{game_id}') @router.post('/wipe/{game_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def wipe_game(game_id: int, token: str = Depends(oauth2_scheme)): async def wipe_game(game_id: int, token: str = Depends(oauth2_scheme)) -> Any:
if not valid_token(token): if not valid_token(token):
logging.warning(f'wipe_game - Bad Token: {token}') logging.warning(f'wipe_game - Bad Token: {token}')
raise HTTPException(status_code=401, detail='Unauthorized') 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}') raise HTTPException(status_code=500, detail=f'Unable to wipe game {game_id}')
@router.delete('/{game_id}') @router.delete('/{game_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def delete_game(game_id: int, token: str = Depends(oauth2_scheme)): async def delete_game(game_id: int, token: str = Depends(oauth2_scheme)) -> Any:
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_game - Bad Token: {token}') logging.warning(f'delete_game - Bad Token: {token}')
raise HTTPException(status_code=401, detail='Unauthorized') 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, \ from ..db_engine import db, StratPlay, StratGame, Team, Player, Decision, model_to_dict, chunked, fn, SQL, \
complex_data_to_csv 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -256,6 +256,10 @@ async def get_plays(
all_plays = all_plays.order_by(-fn.ABS(StratPlay.wpa)) all_plays = all_plays.order_by(-fn.ABS(StratPlay.wpa))
elif sort == 'wpa-asc': elif sort == 'wpa-asc':
all_plays = all_plays.order_by(fn.ABS(StratPlay.wpa)) 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': elif sort == 'newest':
all_plays = all_plays.order_by(StratPlay.game_id.desc(), StratPlay.play_num.desc()) all_plays = all_plays.order_by(StratPlay.game_id.desc(), StratPlay.play_num.desc())
elif sort == 'oldest': elif sort == 'oldest':
@ -1025,7 +1029,7 @@ async def get_one_play(play_id: int):
return r_play 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)): async def patch_play(play_id: int, new_play: PlayModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'patch_play - Bad 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 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)): async def post_plays(p_list: PlayList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_plays - Bad 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' 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)): async def delete_play(play_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_play - Bad 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') 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)): async def delete_plays_game(game_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_plays_game - Bad 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') 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)): async def post_erun_check(token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_erun_check - Bad Token: {token}') logging.warning(f'post_erun_check - Bad Token: {token}')

View File

@ -4,8 +4,8 @@ import copy
import logging import logging
import pydantic import pydantic
from ..db_engine import db, Team, Manager, Division, model_to_dict, chunked, fn, query_to_csv 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 from ..dependencies import oauth2_scheme, valid_token, LOG_DATA, PRIVATE_IN_SCHEMA
logging.basicConfig( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -88,7 +88,7 @@ async def get_one_team(team_id: int):
return r_team 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): async def get_team_roster(team_id: int, which: Literal['current', 'next'], sort: Optional[str] = None):
try: try:
this_team = Team.get_by_id(team_id) 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 return full_roster
@router.patch('/{team_id}') @router.patch('/{team_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_team( async def patch_team(
team_id: int, manager1_id: Optional[int] = None, manager2_id: Optional[int] = None, gmid: Optional[int] = None, 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, 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}') 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)): async def post_team(team_list: TeamList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_team - Bad 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' 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)): async def delete_team(team_id: int, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_team - Bad Token: {token}') logging.warning(f'delete_team - Bad Token: {token}')

View File

@ -5,7 +5,7 @@ import logging
import pydantic import pydantic
from ..db_engine import db, Transaction, Team, Player, model_to_dict, chunked, fn 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( logging.basicConfig(
filename=LOG_DATA['filename'], filename=LOG_DATA['filename'],
@ -91,7 +91,7 @@ async def get_transactions(
return return_trans return return_trans
@router.patch('/{move_id}') @router.patch('/{move_id}', include_in_schema=PRIVATE_IN_SCHEMA)
async def patch_transactions( async def patch_transactions(
move_id, token: str = Depends(oauth2_scheme), frozen: Optional[bool] = None, cancelled: Optional[bool] = None): move_id, token: str = Depends(oauth2_scheme), frozen: Optional[bool] = None, cancelled: Optional[bool] = None):
if not valid_token(token): 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') 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)): async def post_transactions(moves: TransactionList, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'post_transactions - Bad 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') 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)): async def delete_transactions(move_id, token: str = Depends(oauth2_scheme)):
if not valid_token(token): if not valid_token(token):
logging.warning(f'delete_transactions - Bad Token: {token}') logging.warning(f'delete_transactions - Bad Token: {token}')