Update app.py via AI Editor
Browse files
app.py
CHANGED
@@ -192,6 +192,7 @@ app.layout = dbc.Container(
|
|
192 |
[
|
193 |
dcc.Store(id='session-id-store', storage_type='session'),
|
194 |
dcc.Store(id='session-store', storage_type='session'),
|
|
|
195 |
dbc.Row(
|
196 |
[
|
197 |
dbc.Col(
|
@@ -379,7 +380,7 @@ def handle_upload(contents, filename, clear_n, delete_upload_n_list, split_n, de
|
|
379 |
html.Div(
|
380 |
dbc.Button(
|
381 |
"Download All (ZIP)", color="primary", size="lg", className='mb-3 mt-4',
|
382 |
-
|
383 |
),
|
384 |
style={'marginTop': '30px', 'display': 'block' if split_files else 'none'}
|
385 |
),
|
@@ -456,7 +457,7 @@ def handle_upload(contents, filename, clear_n, delete_upload_n_list, split_n, de
|
|
456 |
split_files_list = get_split_files_ui(split_files, session_id)
|
457 |
download_zip_btn = dbc.Button(
|
458 |
"Download All (ZIP)", color="primary", size="lg", className='mb-3 mt-4',
|
459 |
-
|
460 |
)
|
461 |
results = html.Div([
|
462 |
html.H5("Split Files:"),
|
@@ -483,7 +484,7 @@ def handle_upload(contents, filename, clear_n, delete_upload_n_list, split_n, de
|
|
483 |
split_files_list = get_split_files_ui(split_files, session_id)
|
484 |
download_zip_btn = dbc.Button(
|
485 |
"Download All (ZIP)", color="primary", size="lg", className='mb-3 mt-4',
|
486 |
-
|
487 |
)
|
488 |
results = html.Div([
|
489 |
html.H5("Split Files:"),
|
@@ -508,6 +509,24 @@ def handle_upload(contents, filename, clear_n, delete_upload_n_list, split_n, de
|
|
508 |
logging.info(f"handle_upload: No action taken, returning current session_data for session {session_id}")
|
509 |
return "", True, get_split_results_placeholder(), session_data
|
510 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
511 |
@app.server.route('/download_zip/<session_id>/<filename>')
|
512 |
def download_zip_file(session_id, filename):
|
513 |
session_dir = get_session_dir(session_id)
|
|
|
192 |
[
|
193 |
dcc.Store(id='session-id-store', storage_type='session'),
|
194 |
dcc.Store(id='session-store', storage_type='session'),
|
195 |
+
dcc.Download(id="download-zip-dcc"),
|
196 |
dbc.Row(
|
197 |
[
|
198 |
dbc.Col(
|
|
|
380 |
html.Div(
|
381 |
dbc.Button(
|
382 |
"Download All (ZIP)", color="primary", size="lg", className='mb-3 mt-4',
|
383 |
+
id="download-zip-btn"
|
384 |
),
|
385 |
style={'marginTop': '30px', 'display': 'block' if split_files else 'none'}
|
386 |
),
|
|
|
457 |
split_files_list = get_split_files_ui(split_files, session_id)
|
458 |
download_zip_btn = dbc.Button(
|
459 |
"Download All (ZIP)", color="primary", size="lg", className='mb-3 mt-4',
|
460 |
+
id="download-zip-btn"
|
461 |
)
|
462 |
results = html.Div([
|
463 |
html.H5("Split Files:"),
|
|
|
484 |
split_files_list = get_split_files_ui(split_files, session_id)
|
485 |
download_zip_btn = dbc.Button(
|
486 |
"Download All (ZIP)", color="primary", size="lg", className='mb-3 mt-4',
|
487 |
+
id="download-zip-btn"
|
488 |
)
|
489 |
results = html.Div([
|
490 |
html.H5("Split Files:"),
|
|
|
509 |
logging.info(f"handle_upload: No action taken, returning current session_data for session {session_id}")
|
510 |
return "", True, get_split_results_placeholder(), session_data
|
511 |
|
512 |
+
@app.callback(
|
513 |
+
Output("download-zip-dcc", "data"),
|
514 |
+
Input("download-zip-btn", "n_clicks"),
|
515 |
+
State('session-id-store', 'data'),
|
516 |
+
prevent_initial_call=True
|
517 |
+
)
|
518 |
+
def trigger_download_zip(n_clicks, session_id):
|
519 |
+
if not n_clicks or not session_id:
|
520 |
+
return dash.no_update
|
521 |
+
session_dir = get_session_dir(session_id)
|
522 |
+
zip_path = os.path.join(session_dir, "split_files.zip")
|
523 |
+
if os.path.exists(zip_path):
|
524 |
+
logging.info(f"trigger_download_zip: Sending zip {zip_path} for session {session_id}")
|
525 |
+
return dcc.send_file(zip_path)
|
526 |
+
else:
|
527 |
+
logging.error(f"trigger_download_zip: Zip file not found for session {session_id}")
|
528 |
+
return dash.no_update
|
529 |
+
|
530 |
@app.server.route('/download_zip/<session_id>/<filename>')
|
531 |
def download_zip_file(session_id, filename):
|
532 |
session_dir = get_session_dir(session_id)
|