Jon Solow commited on
Commit
4ab77a1
·
1 Parent(s): 78f0d03

Add selected keepers page

Browse files
src/page_selector.py CHANGED
@@ -13,6 +13,8 @@ MAIN_PAGE_FILE = "Home.py"
13
  MODE_PAGE_EXCLUSION_MAP = {
14
  SEASON_MODE: [
15
  "Keepers",
 
 
16
  "ECR",
17
  "League_Simulation",
18
  "Keeper_Rules",
 
13
  MODE_PAGE_EXCLUSION_MAP = {
14
  SEASON_MODE: [
15
  "Keepers",
16
+ "My_Keepers",
17
+ "Selected_Keepers",
18
  "ECR",
19
  "League_Simulation",
20
  "Keeper_Rules",
src/pages/2_Selected_Keepers.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import pandas as pd
3
+ import streamlit as st
4
+ from tenacity import retry
5
+
6
+ from config import DEFAULT_ICON, LEAGUE_NAME, KEEPER_DATA_URL
7
+ from shared_page import common_page_config
8
+ from queries.supabase_db.client import get_all_selected_keepers
9
+
10
+
11
+ @st.cache_data(ttl=60 * 60 * 24)
12
+ def load_data():
13
+ data = pd.read_csv(os.path.join(os.path.dirname(__file__), KEEPER_DATA_URL), index_col=0)
14
+ # Hack to get position, replace with better position from yahoo api in future
15
+ data["position"] = (
16
+ data["eligible_positions"]
17
+ .apply(lambda x: x.split(" ")[0])
18
+ .str.replace("[", "")
19
+ .str.replace("]", "")
20
+ .str.replace("'", "")
21
+ )
22
+ data.columns = data.columns.str.lower()
23
+ data.sort_values(["team_name", "keeper_cost"], inplace=True)
24
+ teams_list = sorted(list(data["team_name"].unique()))
25
+
26
+ return data, teams_list
27
+
28
+
29
+ @retry()
30
+ def get_selected_keepers_with_retry():
31
+ return get_all_selected_keepers()
32
+
33
+
34
+ def get_page():
35
+ page_title = f"{LEAGUE_NAME} - Selected Keepers"
36
+ st.set_page_config(page_title=page_title, page_icon=DEFAULT_ICON, layout="wide")
37
+ common_page_config()
38
+ st.title(page_title)
39
+
40
+ data, _ = load_data()
41
+ st.header("Selected Keepers")
42
+ selected_keepers = get_selected_keepers_with_retry()
43
+ df_selected = pd.DataFrame(selected_keepers)
44
+ if len(df_selected):
45
+ cols_from_options = [
46
+ "player_id",
47
+ "headshot_url",
48
+ "name",
49
+ "position",
50
+ "years_eligible",
51
+ "team_name",
52
+ ]
53
+ selected_data = data[cols_from_options].merge(df_selected, how="inner", on="player_id")
54
+ st.dataframe(
55
+ selected_data,
56
+ hide_index=True,
57
+ height=35 * (len(selected_data) + 1) + 5,
58
+ column_order=[
59
+ "team_name",
60
+ "headshot_url",
61
+ "name",
62
+ "position",
63
+ "keeper_cost",
64
+ "years_eligible",
65
+ ],
66
+ column_config={
67
+ "team_name": st.column_config.TextColumn(label="Team Name"),
68
+ "headshot_url": st.column_config.ImageColumn(label="", help="Player image"),
69
+ "name": st.column_config.TextColumn(label="Name", help="Player's name"),
70
+ "position": st.column_config.TextColumn(label="Position", help="Player's position"),
71
+ "keeper_cost": st.column_config.NumberColumn(
72
+ label="Keeper Cost", help="Draft Round Cost to keep player. See Rules for details."
73
+ ),
74
+ "years_eligible": st.column_config.NumberColumn(
75
+ label="Years Eligible",
76
+ help="Number of further consecutive seasons player can be kept (subject to maximum of 2)",
77
+ ),
78
+ },
79
+ )
80
+
81
+
82
+ if __name__ == "__main__":
83
+ get_page()
src/queries/supabase_db/client.py CHANGED
@@ -16,6 +16,12 @@ def get_selected_keepers(manager_guid: str):
16
  return {x["player_id"]: x["keeper_cost"] for x in response_data}
17
 
18
 
 
 
 
 
 
 
19
  def select_keeper(player_id: int, manager_guid: str, keeper_cost: int):
20
  return (
21
  supabase_client.table("selected_keepers")
 
16
  return {x["player_id"]: x["keeper_cost"] for x in response_data}
17
 
18
 
19
+ def get_all_selected_keepers():
20
+ """Returns a map of selected player id and actual keeper cost applied for logged in guid"""
21
+ response_data = supabase_client.table("selected_keepers").select("*").execute().data
22
+ return response_data
23
+
24
+
25
  def select_keeper(player_id: int, manager_guid: str, keeper_cost: int):
26
  return (
27
  supabase_client.table("selected_keepers")