bluenevus commited on
Commit
0095565
·
1 Parent(s): a2ffbec

Update app.py via AI Editor

Browse files
Files changed (1) hide show
  1. app.py +10 -7
app.py CHANGED
@@ -1,6 +1,6 @@
1
  import dash
2
  import dash_bootstrap_components as dbc
3
- from dash import html, dcc, Input, Output, State, ctx
4
  import flask
5
  import uuid
6
  import os
@@ -14,7 +14,6 @@ import re
14
  import zipfile
15
  import base64
16
 
17
- # Configure logging
18
  logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')
19
 
20
  SESSION_DATA = {}
@@ -196,12 +195,12 @@ app.layout = dbc.Container(
196
  Input('upload-pdf', 'contents'),
197
  State('upload-pdf', 'filename'),
198
  Input('clear-session', 'n_clicks'),
199
- Input({'type': 'delete-upload-btn', 'index': 0}, 'n_clicks'),
200
  Input('split-btn', 'n_clicks'),
201
  State('session-store', 'data'),
202
  prevent_initial_call='initial_duplicate'
203
  )
204
- def handle_upload(contents, filename, clear_n, delete_upload_n, split_n, session_data):
205
  trigger = ctx.triggered_id
206
  session_id = get_session_id()
207
  flask.g.session_id = session_id
@@ -211,12 +210,14 @@ def handle_upload(contents, filename, clear_n, delete_upload_n, split_n, session
211
  if session_data is None:
212
  session_data = {}
213
 
 
214
  if trigger == 'clear-session':
215
  clean_session(session_id)
216
  resp_data = {}
217
  return "", "", resp_data
218
 
219
- if trigger == {'type': 'delete-upload-btn', 'index': 0}:
 
220
  orig_filename = session_data.get('orig_filename', '')
221
  pdf_path = os.path.join(session_dir, orig_filename)
222
  if os.path.exists(pdf_path):
@@ -227,6 +228,7 @@ def handle_upload(contents, filename, clear_n, delete_upload_n, split_n, session
227
  os.remove(os.path.join(session_dir, file))
228
  return "", "", {}
229
 
 
230
  if trigger == 'upload-pdf':
231
  if not contents:
232
  return "", "", {}
@@ -265,8 +267,8 @@ def handle_upload(contents, filename, clear_n, delete_upload_n, split_n, session
265
  logging.error(f"Error processing PDF: {e}")
266
  return html.Div(f"Error: {e}", style={'color': 'red'}), "", {}
267
 
 
268
  if session_data.get('orig_filename') and not session_data.get('split_files'):
269
- # If user refreshes after upload but before split, restore file info and split button
270
  file_info = dbc.Row([
271
  dbc.Col(html.Div(f"Uploaded: {session_data['orig_filename']}"), width=9, style={'display': 'flex', 'alignItems': 'center'}),
272
  dbc.Col(
@@ -282,6 +284,7 @@ def handle_upload(contents, filename, clear_n, delete_upload_n, split_n, session
282
  ])
283
  return file_info, split_results, session_data
284
 
 
285
  if trigger == 'split-btn':
286
  orig_filename = session_data.get('orig_filename')
287
  if not orig_filename:
@@ -322,7 +325,7 @@ def handle_upload(contents, filename, clear_n, delete_upload_n, split_n, session
322
  logging.error(f"Error splitting PDF: {e}")
323
  return html.Div(f"Error: {e}", style={'color': 'red'}), "", session_data
324
 
325
- # Restore split results if user refreshes after splitting
326
  if session_data.get('split_files'):
327
  split_files = session_data['split_files']
328
  orig_filename = session_data.get('orig_filename', '')
 
1
  import dash
2
  import dash_bootstrap_components as dbc
3
+ from dash import html, dcc, Input, Output, State, ctx, ALL
4
  import flask
5
  import uuid
6
  import os
 
14
  import zipfile
15
  import base64
16
 
 
17
  logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')
18
 
19
  SESSION_DATA = {}
 
195
  Input('upload-pdf', 'contents'),
196
  State('upload-pdf', 'filename'),
197
  Input('clear-session', 'n_clicks'),
198
+ Input({'type': 'delete-upload-btn', 'index': ALL}, 'n_clicks'),
199
  Input('split-btn', 'n_clicks'),
200
  State('session-store', 'data'),
201
  prevent_initial_call='initial_duplicate'
202
  )
203
+ def handle_upload(contents, filename, clear_n, delete_upload_n_list, split_n, session_data):
204
  trigger = ctx.triggered_id
205
  session_id = get_session_id()
206
  flask.g.session_id = session_id
 
210
  if session_data is None:
211
  session_data = {}
212
 
213
+ # Handle Clear Session
214
  if trigger == 'clear-session':
215
  clean_session(session_id)
216
  resp_data = {}
217
  return "", "", resp_data
218
 
219
+ # Handle Delete Upload (detect ANY delete button press)
220
+ if isinstance(trigger, dict) and trigger.get('type') == 'delete-upload-btn':
221
  orig_filename = session_data.get('orig_filename', '')
222
  pdf_path = os.path.join(session_dir, orig_filename)
223
  if os.path.exists(pdf_path):
 
228
  os.remove(os.path.join(session_dir, file))
229
  return "", "", {}
230
 
231
+ # Handle Upload
232
  if trigger == 'upload-pdf':
233
  if not contents:
234
  return "", "", {}
 
267
  logging.error(f"Error processing PDF: {e}")
268
  return html.Div(f"Error: {e}", style={'color': 'red'}), "", {}
269
 
270
+ # Restore after upload (before split)
271
  if session_data.get('orig_filename') and not session_data.get('split_files'):
 
272
  file_info = dbc.Row([
273
  dbc.Col(html.Div(f"Uploaded: {session_data['orig_filename']}"), width=9, style={'display': 'flex', 'alignItems': 'center'}),
274
  dbc.Col(
 
284
  ])
285
  return file_info, split_results, session_data
286
 
287
+ # Handle Split
288
  if trigger == 'split-btn':
289
  orig_filename = session_data.get('orig_filename')
290
  if not orig_filename:
 
325
  logging.error(f"Error splitting PDF: {e}")
326
  return html.Div(f"Error: {e}", style={'color': 'red'}), "", session_data
327
 
328
+ # Restore after split
329
  if session_data.get('split_files'):
330
  split_files = session_data['split_files']
331
  orig_filename = session_data.get('orig_filename', '')