awacke1 commited on
Commit
3573816
Β·
verified Β·
1 Parent(s): 651d0e7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -10
app.py CHANGED
@@ -39,9 +39,8 @@ def fetch_all_records():
39
  items = list(container.query_items(query=query, enable_cross_partition_query=True))
40
  return pd.DataFrame(items)
41
 
42
- def bulk_delete_records(ids):
43
  try:
44
- # Cosmos DB doesn't support bulk delete directly, so we'll delete items one by one
45
  for id in ids:
46
  container.delete_item(item=id, partition_key=id)
47
  return True, f"Successfully deleted {len(ids)} records"
@@ -51,14 +50,17 @@ def bulk_delete_records(ids):
51
  # Streamlit app
52
  st.title("🌟 Cosmos DB Record Management")
53
 
 
 
 
 
54
  # Login section
55
  if 'logged_in' not in st.session_state:
56
  st.session_state.logged_in = False
57
 
58
  if not st.session_state.logged_in:
59
  st.subheader("πŸ” Login")
60
- #input_key = st.text_input("Enter your key", type="password")
61
- input_key = Key
62
  if st.button("πŸš€ Login"):
63
  if input_key:
64
  st.session_state.primary_key = input_key
@@ -77,20 +79,32 @@ else:
77
  df = fetch_all_records()
78
 
79
  # Add a checkbox column to the dataframe
80
- df['select'] = False
81
 
82
  # Use Streamlit's data editor
83
- edited_df = st.data_editor(df, num_rows="dynamic", key="data_editor")
 
 
 
 
 
 
 
 
 
 
 
 
84
 
85
  # Add delete and download buttons
86
  col1, col2 = st.columns(2)
87
  with col1:
88
  if st.button("πŸ—‘οΈ Delete Selected"):
89
- selected_ids = edited_df[edited_df['select']]['id'].tolist()
90
- if selected_ids:
91
- success, message = bulk_delete_records(selected_ids)
92
  if success:
93
  st.success(message)
 
94
  else:
95
  st.error(message)
96
  st.rerun()
@@ -98,7 +112,7 @@ else:
98
  st.warning("No records selected for deletion.")
99
 
100
  with col2:
101
- if st.download_button("πŸ“₯ Download Data", edited_df.to_csv(index=False), "cosmos_db_data.csv", "text/csv"):
102
  st.success("Data downloaded successfully!")
103
 
104
  # Input fields for new record
@@ -151,6 +165,7 @@ else:
151
  # Logout button
152
  if st.button("πŸšͺ Logout"):
153
  st.session_state.logged_in = False
 
154
  st.rerun()
155
 
156
  # Display connection info
 
39
  items = list(container.query_items(query=query, enable_cross_partition_query=True))
40
  return pd.DataFrame(items)
41
 
42
+ def delete_records(ids):
43
  try:
 
44
  for id in ids:
45
  container.delete_item(item=id, partition_key=id)
46
  return True, f"Successfully deleted {len(ids)} records"
 
50
  # Streamlit app
51
  st.title("🌟 Cosmos DB Record Management")
52
 
53
+ # Initialize session state for selected IDs
54
+ if 'selected_ids' not in st.session_state:
55
+ st.session_state.selected_ids = set()
56
+
57
  # Login section
58
  if 'logged_in' not in st.session_state:
59
  st.session_state.logged_in = False
60
 
61
  if not st.session_state.logged_in:
62
  st.subheader("πŸ” Login")
63
+ input_key = st.text_input("Enter your key", type="password")
 
64
  if st.button("πŸš€ Login"):
65
  if input_key:
66
  st.session_state.primary_key = input_key
 
79
  df = fetch_all_records()
80
 
81
  # Add a checkbox column to the dataframe
82
+ df['select'] = df['id'].isin(st.session_state.selected_ids)
83
 
84
  # Use Streamlit's data editor
85
+ edited_df = st.data_editor(df, key="data_editor", disabled=["id", "name", "document", "evaluationText", "evaluationScore"])
86
+
87
+ # Update selected_ids based on the edited dataframe
88
+ selected_rows = edited_df[edited_df['select']]
89
+ st.session_state.selected_ids = set(selected_rows['id'])
90
+
91
+ # Display selected IDs with emoji checkboxes
92
+ if st.session_state.selected_ids:
93
+ st.markdown("### Selected Records:")
94
+ for id in st.session_state.selected_ids:
95
+ st.markdown(f"βœ… {id}")
96
+ else:
97
+ st.markdown("### No Records Selected")
98
 
99
  # Add delete and download buttons
100
  col1, col2 = st.columns(2)
101
  with col1:
102
  if st.button("πŸ—‘οΈ Delete Selected"):
103
+ if st.session_state.selected_ids:
104
+ success, message = delete_records(list(st.session_state.selected_ids))
 
105
  if success:
106
  st.success(message)
107
+ st.session_state.selected_ids.clear() # Clear the selection after successful deletion
108
  else:
109
  st.error(message)
110
  st.rerun()
 
112
  st.warning("No records selected for deletion.")
113
 
114
  with col2:
115
+ if st.download_button("πŸ“₯ Download Data", df.to_csv(index=False), "cosmos_db_data.csv", "text/csv"):
116
  st.success("Data downloaded successfully!")
117
 
118
  # Input fields for new record
 
165
  # Logout button
166
  if st.button("πŸšͺ Logout"):
167
  st.session_state.logged_in = False
168
+ st.session_state.selected_ids.clear() # Clear selected IDs on logout
169
  st.rerun()
170
 
171
  # Display connection info