Jon Solow commited on
Commit
a0c0946
·
1 Parent(s): 74e466f

Add supabase client and ability to select keepers

Browse files
src/pages/2_My_Keepers.py CHANGED
@@ -4,7 +4,7 @@ import streamlit as st
4
 
5
  from config import DEFAULT_ICON, LEAGUE_NAME, KEEPER_DATA_URL
6
  from shared_page import common_page_config
7
-
8
 
9
  from login_component import is_token_in_session
10
 
@@ -43,33 +43,75 @@ def get_page():
43
  st.warning("Work in progress. Ability to save selections is yet to be completed.")
44
  data, _ = load_data()
45
  data_user = data[(data["manager_guid"] == st.session_state.get("logged_in_guid")) & (data["eligible"])]
46
- st.header("Options")
47
- st.dataframe(
48
- data_user,
49
- hide_index=True,
50
- height=35 * (len(data_user) + 1) + 5,
51
- column_order=[
52
- "headshot_url",
53
- "name",
54
- "team",
55
- "position",
56
- "keeper_cost",
57
- "years_eligible",
58
- ],
59
- column_config={
60
- "headshot_url": st.column_config.ImageColumn(label="", help="Player image"),
61
- "name": st.column_config.TextColumn(label="Name", help="Player's name"),
62
- "team": st.column_config.TextColumn(label="NFL Team"),
63
- "position": st.column_config.TextColumn(label="Position", help="Player's position"),
64
- "keeper_cost": st.column_config.NumberColumn(
65
- label="Keeper Cost", help="Draft Round Cost to keep player. See Rules for details."
66
- ),
67
- "years_eligible": st.column_config.NumberColumn(
68
- label="Years Eligible",
69
- help="Number of further consecutive seasons player can be kept (subject to maximum of 2)",
70
- ),
71
- },
 
 
 
 
 
 
 
 
 
 
72
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
 
75
  if __name__ == "__main__":
 
4
 
5
  from config import DEFAULT_ICON, LEAGUE_NAME, KEEPER_DATA_URL
6
  from shared_page import common_page_config
7
+ from queries.supabase_db.client import get_selected_keepers, select_keeper
8
 
9
  from login_component import is_token_in_session
10
 
 
43
  st.warning("Work in progress. Ability to save selections is yet to be completed.")
44
  data, _ = load_data()
45
  data_user = data[(data["manager_guid"] == st.session_state.get("logged_in_guid")) & (data["eligible"])]
46
+ st.header("Selected Keepers")
47
+ selected_keeper_cost_map = get_selected_keepers(st.session_state.get("logged_in_guid"))
48
+ if selected_keeper_cost_map:
49
+ selected_data = data_user[data_user.player_id.isin(selected_keeper_cost_map.keys())]
50
+ selected_data["keeper_cost"] = selected_data.player_id.map(selected_keeper_cost_map)
51
+ st.dataframe(
52
+ selected_data,
53
+ hide_index=True,
54
+ height=35 * (len(selected_data) + 1) + 5,
55
+ column_order=[
56
+ "headshot_url",
57
+ "name",
58
+ "position",
59
+ "keeper_cost",
60
+ "years_eligible",
61
+ ],
62
+ column_config={
63
+ "headshot_url": st.column_config.ImageColumn(label="", help="Player image"),
64
+ "name": st.column_config.TextColumn(label="Name", help="Player's name"),
65
+ "position": st.column_config.TextColumn(label="Position", help="Player's position"),
66
+ "keeper_cost": st.column_config.NumberColumn(
67
+ label="Keeper Cost", help="Draft Round Cost to keep player. See Rules for details."
68
+ ),
69
+ "years_eligible": st.column_config.NumberColumn(
70
+ label="Years Eligible",
71
+ help="Number of further consecutive seasons player can be kept (subject to maximum of 2)",
72
+ ),
73
+ },
74
+ )
75
+ st.header("Add Keeper")
76
+
77
+ selection = st.selectbox(
78
+ "Add Keeper",
79
+ data_user[~data_user.player_id.isin(selected_keeper_cost_map.keys())].to_dict(orient="records"),
80
+ format_func=lambda x: f"{x['name']} - {x['keeper_cost']}",
81
+ index=None,
82
  )
83
+ if selection:
84
+ if st.button("Add Selection"):
85
+ select_keeper(selection["player_id"], selection["manager_guid"], selection["keeper_cost"])
86
+ st.rerun()
87
+ st.header("Options")
88
+ if st.checkbox("Show all my options"):
89
+ st.dataframe(
90
+ data_user,
91
+ hide_index=True,
92
+ height=35 * (len(data_user) + 1) + 5,
93
+ column_order=[
94
+ "headshot_url",
95
+ "name",
96
+ "team",
97
+ "position",
98
+ "keeper_cost",
99
+ "years_eligible",
100
+ ],
101
+ column_config={
102
+ "headshot_url": st.column_config.ImageColumn(label="", help="Player image"),
103
+ "name": st.column_config.TextColumn(label="Name", help="Player's name"),
104
+ "team": st.column_config.TextColumn(label="NFL Team"),
105
+ "position": st.column_config.TextColumn(label="Position", help="Player's position"),
106
+ "keeper_cost": st.column_config.NumberColumn(
107
+ label="Keeper Cost", help="Draft Round Cost to keep player. See Rules for details."
108
+ ),
109
+ "years_eligible": st.column_config.NumberColumn(
110
+ label="Years Eligible",
111
+ help="Number of further consecutive seasons player can be kept (subject to maximum of 2)",
112
+ ),
113
+ },
114
+ )
115
 
116
 
117
  if __name__ == "__main__":
src/queries/supabase_db/__init__.py ADDED
File without changes
src/queries/supabase_db/client.py ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
+ from supabase import create_client, Client
4
+
5
+ url: str = os.environ.get("SUPABASE_URL")
6
+ key: str = os.environ.get("SUPABASE_KEY")
7
+
8
+ supabase_client: Client = create_client(url, key)
9
+
10
+
11
+ def get_selected_keepers(manager_guid: str):
12
+ """Returns a map of selected player id and actual keeper cost applied for logged in guid"""
13
+ response_data = (
14
+ supabase_client.table("selected_keepers").select("*").eq("manager_guid", manager_guid).execute().data
15
+ )
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")
22
+ .insert({"player_id": player_id, "manager_guid": manager_guid, "keeper_cost": keeper_cost})
23
+ .execute()
24
+ )