Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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
|
| 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 |
-
|
| 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'] =
|
| 81 |
|
| 82 |
# Use Streamlit's data editor
|
| 83 |
-
edited_df = st.data_editor(df,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
|
| 85 |
# Add delete and download buttons
|
| 86 |
col1, col2 = st.columns(2)
|
| 87 |
with col1:
|
| 88 |
if st.button("ποΈ Delete Selected"):
|
| 89 |
-
|
| 90 |
-
|
| 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",
|
| 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
|