Spaces:
Running
Running
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
|