MarcosRodrigo commited on
Commit
ef2a62b
1 Parent(s): cc790b6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -21
app.py CHANGED
@@ -32,18 +32,15 @@ def load_current_selections():
32
 
33
  # Save current user selections to the shared CSV file without overwriting previous data
34
  def save_current_selection_to_file(current_selections):
35
- # Convert list columns to strings to avoid unhashable type errors
36
  current_selections["Drinks"] = current_selections["Drinks"].apply(lambda x: ", ".join(x) if isinstance(x, list) else x)
37
  current_selections["Food"] = current_selections["Food"].apply(lambda x: ", ".join(x) if isinstance(x, list) else x)
38
 
39
- # Read the existing file to avoid overwriting
40
  if os.path.exists(TEMP_FILE):
41
  existing_selections = pd.read_csv(TEMP_FILE)
42
  combined_selections = pd.concat([existing_selections, current_selections]).drop_duplicates()
43
  else:
44
  combined_selections = current_selections
45
 
46
- # Save the updated DataFrame to the CSV file
47
  combined_selections.to_csv(TEMP_FILE, index=False)
48
 
49
  # Upload the shared file to Hugging Face repository for persistence
@@ -57,6 +54,15 @@ def upload_temp_file_to_repo():
57
  repo_type="space"
58
  )
59
 
 
 
 
 
 
 
 
 
 
60
  # Download the shared file from the repository to ensure persistence and real-time updates
61
  def download_temp_file_from_repo():
62
  try:
@@ -82,16 +88,13 @@ def save_summary_to_history():
82
  timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
83
  history_filename = f"{HISTORY_DIR}/{timestamp}.txt"
84
 
85
- # Ensure the history directory exists
86
  if not os.path.exists(HISTORY_DIR):
87
  os.makedirs(HISTORY_DIR)
88
 
89
- # Read the current selections file
90
  if os.path.exists(TEMP_FILE):
91
  summary_df = pd.read_csv(TEMP_FILE)
92
  summary_df.to_csv(history_filename, index=False)
93
 
94
- # Upload the file to the repository
95
  upload_file(path_or_fileobj=history_filename, path_in_repo=history_filename, repo_id=REPO_ID, token=hf_token, repo_type="space")
96
  return timestamp
97
 
@@ -120,7 +123,6 @@ if menu == "Poll":
120
  st.session_state.users.append(name)
121
  st.session_state.step = 2
122
 
123
- # Step 2: Select Drinks
124
  if st.session_state.step == 2:
125
  st.header("Step 2: Select your drink(s)")
126
  drinks_options = [
@@ -133,7 +135,6 @@ if menu == "Poll":
133
  st.session_state.current_selections.append({"Name": st.session_state.users[-1], "Drinks": selected_drinks})
134
  st.session_state.step = 3
135
 
136
- # Step 3: Select Food and Save Selections
137
  if st.session_state.step == 3:
138
  st.header("Step 3: Select your food(s)")
139
  food_options = [
@@ -158,33 +159,26 @@ elif menu == "Current":
158
  st.table(current_df)
159
 
160
  if st.button("Submit Summary to History"):
161
- # Save the current selections to history
162
  timestamp = save_summary_to_history()
163
  st.success(f"Summary saved to history at {timestamp}")
164
-
165
- # Reload history after saving to reflect the new entry
166
  st.session_state.history = load_history()
167
-
168
- # Delete the current selections file and clear session state
169
  if os.path.exists(TEMP_FILE):
170
- os.remove(TEMP_FILE) # Remove the local current_selections.csv file
171
- # Reset the session state to reflect the empty state
172
- st.session_state.current_selections = []
173
 
174
  # Create an empty CSV to replace the deleted one
175
  pd.DataFrame(columns=["Name", "Drinks", "Food"]).to_csv(TEMP_FILE, index=False)
176
- # Upload the empty file to the repository to ensure shared state is reset
177
  upload_temp_file_to_repo()
178
-
179
- # Refresh the view to show the empty table
180
- st.experimental_set_query_params(step="reset")
181
 
 
182
 
183
  # History view to check past summaries
184
  elif menu == "History":
185
  st.title("Breakfast Poll History")
186
  if not st.session_state.history:
187
- st.session_state.history = load_history() # Reload history if it's empty
188
  if st.session_state.history:
189
  for record in st.session_state.history:
190
  st.subheader(f"Date: {record['Date']}")
 
32
 
33
  # Save current user selections to the shared CSV file without overwriting previous data
34
  def save_current_selection_to_file(current_selections):
 
35
  current_selections["Drinks"] = current_selections["Drinks"].apply(lambda x: ", ".join(x) if isinstance(x, list) else x)
36
  current_selections["Food"] = current_selections["Food"].apply(lambda x: ", ".join(x) if isinstance(x, list) else x)
37
 
 
38
  if os.path.exists(TEMP_FILE):
39
  existing_selections = pd.read_csv(TEMP_FILE)
40
  combined_selections = pd.concat([existing_selections, current_selections]).drop_duplicates()
41
  else:
42
  combined_selections = current_selections
43
 
 
44
  combined_selections.to_csv(TEMP_FILE, index=False)
45
 
46
  # Upload the shared file to Hugging Face repository for persistence
 
54
  repo_type="space"
55
  )
56
 
57
+ # Delete a file from the repository (e.g., `current_selections.csv`)
58
+ def delete_file_from_repo(filename):
59
+ api.delete_file(
60
+ path_in_repo=filename,
61
+ repo_id=REPO_ID,
62
+ token=hf_token,
63
+ repo_type="space"
64
+ )
65
+
66
  # Download the shared file from the repository to ensure persistence and real-time updates
67
  def download_temp_file_from_repo():
68
  try:
 
88
  timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
89
  history_filename = f"{HISTORY_DIR}/{timestamp}.txt"
90
 
 
91
  if not os.path.exists(HISTORY_DIR):
92
  os.makedirs(HISTORY_DIR)
93
 
 
94
  if os.path.exists(TEMP_FILE):
95
  summary_df = pd.read_csv(TEMP_FILE)
96
  summary_df.to_csv(history_filename, index=False)
97
 
 
98
  upload_file(path_or_fileobj=history_filename, path_in_repo=history_filename, repo_id=REPO_ID, token=hf_token, repo_type="space")
99
  return timestamp
100
 
 
123
  st.session_state.users.append(name)
124
  st.session_state.step = 2
125
 
 
126
  if st.session_state.step == 2:
127
  st.header("Step 2: Select your drink(s)")
128
  drinks_options = [
 
135
  st.session_state.current_selections.append({"Name": st.session_state.users[-1], "Drinks": selected_drinks})
136
  st.session_state.step = 3
137
 
 
138
  if st.session_state.step == 3:
139
  st.header("Step 3: Select your food(s)")
140
  food_options = [
 
159
  st.table(current_df)
160
 
161
  if st.button("Submit Summary to History"):
 
162
  timestamp = save_summary_to_history()
163
  st.success(f"Summary saved to history at {timestamp}")
 
 
164
  st.session_state.history = load_history()
165
+
166
+ # Clear local and remote current selections
167
  if os.path.exists(TEMP_FILE):
168
+ os.remove(TEMP_FILE)
169
+ delete_file_from_repo(TEMP_FILE) # Delete the file from the remote repo
 
170
 
171
  # Create an empty CSV to replace the deleted one
172
  pd.DataFrame(columns=["Name", "Drinks", "Food"]).to_csv(TEMP_FILE, index=False)
 
173
  upload_temp_file_to_repo()
 
 
 
174
 
175
+ st.experimental_set_query_params(step="reset")
176
 
177
  # History view to check past summaries
178
  elif menu == "History":
179
  st.title("Breakfast Poll History")
180
  if not st.session_state.history:
181
+ st.session_state.history = load_history()
182
  if st.session_state.history:
183
  for record in st.session_state.history:
184
  st.subheader(f"Date: {record['Date']}")