import os import pandas as pd import streamlit as st from config import DEFAULT_ICON, LEAGUE_NAME, KEEPER_DATA_URL from shared_page import common_page_config from login_component import is_token_in_session @st.cache_data(ttl=60 * 60 * 24) def load_data(): data = pd.read_csv(os.path.join(os.path.dirname(__file__), KEEPER_DATA_URL), index_col=0) # Hack to get position, replace with better position from yahoo api in future data["position"] = ( data["eligible_positions"].apply(lambda x: x.split(" ")[0]).replace("[", "").replace("]", "").replace("'", "") ) data.columns = data.columns.str.lower() data.sort_values(["team_name", "keeper_cost"], inplace=True) teams_list = sorted(list(data["team_name"].unique())) return data, teams_list def get_page(): page_title = f"{LEAGUE_NAME} - My Keepers" st.set_page_config(page_title=page_title, page_icon=DEFAULT_ICON, layout="wide") common_page_config() st.title(page_title) if not is_token_in_session(): st.write( "You must authorize the application to access your account in order to use this feature." " Please click Login button above." ) else: st.warning("Work in progress. Ability to save selections is yet to be completed.") data, _ = load_data() data_user = data[(data["manager_guid"] == st.session_state.get("logged_in_guid")) & (data["eligible"])] st.header("Options") st.dataframe( data_user, hide_index=True, column_order=[ "team_name", "headshot_url", "name", "team", "position", "keeper_cost", "eligible", "years_eligible", ], column_config={ "team_name": st.column_config.TextColumn(label="League Team", help="Name of fantasy League team."), "headshot_url": st.column_config.ImageColumn(label="", help="Player image"), "name": st.column_config.TextColumn(label="Name", help="Player's name"), "team": st.column_config.TextColumn(label="NFL Team"), "position": st.column_config.TextColumn(label="Position", help="Player's position"), "keeper_cost": st.column_config.NumberColumn( label="Keeper Cost", help="Draft Round Cost to keep player. See Rules for details." ), "eligible": st.column_config.CheckboxColumn(label="Eligible", help="Is player eligible to be keeper?"), "years_eligible": st.column_config.NumberColumn( label="Years Eligible", help="Number of further consecutive seasons player can be kept (subject to maximum of 2)", ), }, ) if __name__ == "__main__": get_page()