zayeem00 commited on
Commit
d8d4de5
·
verified ·
1 Parent(s): 98ba0ce

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -29
app.py CHANGED
@@ -2,7 +2,6 @@ import streamlit as st
2
  import pandas as pd
3
  import numpy as np
4
  import os
5
- from pathlib import Path
6
 
7
  # Configure the page to be mobile-friendly
8
  st.set_page_config(layout="centered", page_title="Restaurant Data Viewer")
@@ -96,10 +95,6 @@ def authenticate(username, password):
96
  return True
97
  return False
98
 
99
- # Function to trigger rerun
100
- def trigger_rerun():
101
- st.experimental_set_query_params(rerun=str(pd.Timestamp.now()))
102
-
103
  # Authentication block
104
  if not st.session_state.authenticated:
105
  st.title("Login")
@@ -109,37 +104,37 @@ if not st.session_state.authenticated:
109
  if authenticate(username, password):
110
  st.session_state.authenticated = True
111
  st.session_state.just_logged_in = True
112
- trigger_rerun()
113
  else:
114
  st.error("Invalid username or password")
115
  elif st.session_state.just_logged_in:
116
  st.session_state.just_logged_in = False
117
- trigger_rerun()
118
  else:
119
  # Sidebar for logo, file upload, and file management
120
  with st.sidebar:
121
  st.image(SIDEBAR_LOGO_URL, use_column_width=True)
122
-
123
  st.title("File Management")
124
-
125
  # File uploader
126
  uploaded_file = st.file_uploader("Choose an Excel file", type="xlsx")
127
-
128
  if uploaded_file:
129
  try:
130
  # Save the uploaded file
131
  file_path = os.path.join(UPLOAD_DIR, uploaded_file.name)
132
  with open(file_path, "wb") as f:
133
  f.write(uploaded_file.getbuffer())
134
-
135
  st.success(f"File '{uploaded_file.name}' uploaded successfully.")
136
-
137
  df = load_data(file_path)
138
  st.session_state.df = df
139
-
140
  except Exception as e:
141
  st.error(f"An error occurred: {e}")
142
-
143
  # Manage existing files
144
  st.subheader("Manage Existing Files")
145
  existing_files = [f for f in os.listdir(UPLOAD_DIR) if f.endswith(".xlsx")]
@@ -148,8 +143,8 @@ else:
148
  if st.button("Delete Selected File"):
149
  os.remove(os.path.join(UPLOAD_DIR, selected_file))
150
  st.success(f"File '{selected_file}' deleted successfully.")
151
- trigger_rerun()
152
-
153
  if st.button("Load Selected File") or st.session_state.df is None:
154
  try:
155
  file_path = os.path.join(UPLOAD_DIR, selected_file)
@@ -159,19 +154,19 @@ else:
159
  st.error(f"An error occurred: {e}")
160
  else:
161
  st.info("No files available.")
162
-
163
  # Display the main logo
164
  st.image(MAIN_LOGO_URL, use_column_width=True)
165
-
166
  st.title("Restaurant Data Viewer")
167
-
168
  # Display and filter the loaded dataframe if available
169
  if st.session_state.df is not None:
170
  df = st.session_state.df
171
-
172
  # Define required columns
173
  required_columns = ['Name', 'Cuisine', 'Location', 'Restaurant Type', 'Expiry Date', 'Website', 'Directions']
174
-
175
  # Verify required columns
176
  missing_columns = verify_columns(df, required_columns)
177
  if missing_columns:
@@ -179,16 +174,16 @@ else:
179
  else:
180
  # Format the expiry date column to remove time
181
  df = format_date_column(df, 'Expiry Date')
182
-
183
  # Display the dataframe
184
  st.subheader("Loaded Data")
185
  st.dataframe(df)
186
-
187
  # Filter functionality
188
  st.subheader("Filters")
189
  # Use columns for a more responsive layout
190
  col1, col2, col3, col4, col5 = st.columns(5)
191
-
192
  with col1:
193
  # Filter by Name
194
  name_filter = st.text_input("Name contains")
@@ -204,10 +199,10 @@ else:
204
  with col5:
205
  # Filter by Expiry Date
206
  expiry_date_filter = st.date_input("Expiry Date", [])
207
-
208
  # Apply filters
209
  filtered_df = df.copy()
210
-
211
  if name_filter:
212
  filtered_df = filtered_df[filtered_df['Name'].str.contains(name_filter, case=False, na=False)]
213
  if cuisine_filter:
@@ -222,14 +217,14 @@ else:
222
  elif len(expiry_date_filter) == 2:
223
  start_date, end_date = expiry_date_filter
224
  filtered_df = filtered_df[(filtered_df['Expiry Date'] >= start_date) & (filtered_df['Expiry Date'] <= end_date)]
225
-
226
  # Display the filtered dataframe in a tile format
227
  st.subheader("Filtered Data")
228
  if not filtered_df.empty:
229
  num_cols = 3 # Number of columns for the tile layout
230
  cols = st.columns(num_cols)
231
  display_tiles(filtered_df, cols)
232
-
233
  # Download button for filtered data
234
  csv = convert_df_to_csv(filtered_df)
235
  st.download_button(
@@ -239,4 +234,4 @@ else:
239
  mime='text/csv',
240
  )
241
  else:
242
- st.info("No data matches the filter criteria.")
 
2
  import pandas as pd
3
  import numpy as np
4
  import os
 
5
 
6
  # Configure the page to be mobile-friendly
7
  st.set_page_config(layout="centered", page_title="Restaurant Data Viewer")
 
95
  return True
96
  return False
97
 
 
 
 
 
98
  # Authentication block
99
  if not st.session_state.authenticated:
100
  st.title("Login")
 
104
  if authenticate(username, password):
105
  st.session_state.authenticated = True
106
  st.session_state.just_logged_in = True
107
+ st.experimental_rerun()
108
  else:
109
  st.error("Invalid username or password")
110
  elif st.session_state.just_logged_in:
111
  st.session_state.just_logged_in = False
112
+ st.experimental_rerun()
113
  else:
114
  # Sidebar for logo, file upload, and file management
115
  with st.sidebar:
116
  st.image(SIDEBAR_LOGO_URL, use_column_width=True)
117
+
118
  st.title("File Management")
119
+
120
  # File uploader
121
  uploaded_file = st.file_uploader("Choose an Excel file", type="xlsx")
122
+
123
  if uploaded_file:
124
  try:
125
  # Save the uploaded file
126
  file_path = os.path.join(UPLOAD_DIR, uploaded_file.name)
127
  with open(file_path, "wb") as f:
128
  f.write(uploaded_file.getbuffer())
129
+
130
  st.success(f"File '{uploaded_file.name}' uploaded successfully.")
131
+
132
  df = load_data(file_path)
133
  st.session_state.df = df
134
+
135
  except Exception as e:
136
  st.error(f"An error occurred: {e}")
137
+
138
  # Manage existing files
139
  st.subheader("Manage Existing Files")
140
  existing_files = [f for f in os.listdir(UPLOAD_DIR) if f.endswith(".xlsx")]
 
143
  if st.button("Delete Selected File"):
144
  os.remove(os.path.join(UPLOAD_DIR, selected_file))
145
  st.success(f"File '{selected_file}' deleted successfully.")
146
+ st.experimental_rerun()
147
+
148
  if st.button("Load Selected File") or st.session_state.df is None:
149
  try:
150
  file_path = os.path.join(UPLOAD_DIR, selected_file)
 
154
  st.error(f"An error occurred: {e}")
155
  else:
156
  st.info("No files available.")
157
+
158
  # Display the main logo
159
  st.image(MAIN_LOGO_URL, use_column_width=True)
160
+
161
  st.title("Restaurant Data Viewer")
162
+
163
  # Display and filter the loaded dataframe if available
164
  if st.session_state.df is not None:
165
  df = st.session_state.df
166
+
167
  # Define required columns
168
  required_columns = ['Name', 'Cuisine', 'Location', 'Restaurant Type', 'Expiry Date', 'Website', 'Directions']
169
+
170
  # Verify required columns
171
  missing_columns = verify_columns(df, required_columns)
172
  if missing_columns:
 
174
  else:
175
  # Format the expiry date column to remove time
176
  df = format_date_column(df, 'Expiry Date')
177
+
178
  # Display the dataframe
179
  st.subheader("Loaded Data")
180
  st.dataframe(df)
181
+
182
  # Filter functionality
183
  st.subheader("Filters")
184
  # Use columns for a more responsive layout
185
  col1, col2, col3, col4, col5 = st.columns(5)
186
+
187
  with col1:
188
  # Filter by Name
189
  name_filter = st.text_input("Name contains")
 
199
  with col5:
200
  # Filter by Expiry Date
201
  expiry_date_filter = st.date_input("Expiry Date", [])
202
+
203
  # Apply filters
204
  filtered_df = df.copy()
205
+
206
  if name_filter:
207
  filtered_df = filtered_df[filtered_df['Name'].str.contains(name_filter, case=False, na=False)]
208
  if cuisine_filter:
 
217
  elif len(expiry_date_filter) == 2:
218
  start_date, end_date = expiry_date_filter
219
  filtered_df = filtered_df[(filtered_df['Expiry Date'] >= start_date) & (filtered_df['Expiry Date'] <= end_date)]
220
+
221
  # Display the filtered dataframe in a tile format
222
  st.subheader("Filtered Data")
223
  if not filtered_df.empty:
224
  num_cols = 3 # Number of columns for the tile layout
225
  cols = st.columns(num_cols)
226
  display_tiles(filtered_df, cols)
227
+
228
  # Download button for filtered data
229
  csv = convert_df_to_csv(filtered_df)
230
  st.download_button(
 
234
  mime='text/csv',
235
  )
236
  else:
237
+ st.info("No data matches the filter criteria.")