bluenevus commited on
Commit
9dfe505
·
1 Parent(s): cedcdf8

Update app.py via AI Editor

Browse files
Files changed (1) hide show
  1. app.py +62 -55
app.py CHANGED
@@ -441,6 +441,7 @@ def update_uploaded_docs(
441
  Input('recover-action-btn', 'n_clicks'),
442
  Input('board-action-btn', 'n_clicks'),
443
  Input('loe-action-btn', 'n_clicks'),
 
444
  ],
445
  State('chat-input', 'value'),
446
  State('select-document-dropdown', 'value'),
@@ -448,68 +449,74 @@ def update_uploaded_docs(
448
  State('select-generated-dropdown', 'value'),
449
  prevent_initial_call=True
450
  )
451
- def handle_actions(
452
- shred_clicks, generate_clicks, compliance_clicks, recover_clicks, board_clicks, loe_clicks,
453
  chat_input, selected_filename, selected_proposal, selected_generated
454
  ):
455
  ctx = callback_context
456
  if not ctx.triggered:
457
  logging.info("No action triggered yet.")
458
  return html.Div("No action taken yet.", style={"wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], selected_generated
459
- button_id = ctx.triggered[0]['prop_id'].split('.')[0]
460
- logging.info(f"Button pressed: {button_id}")
461
-
462
- result = ""
463
- generated_docx_bytes = None
464
- generated_docx_name = None
465
- new_selected_generated = selected_generated
466
-
467
- if button_id == 'shred-action-btn':
468
- result, generated_docx_bytes, generated_docx_name = process_document('shred', selected_filename, chat_input)
469
- if generated_docx_bytes and generated_docx_name:
470
- generated_documents[generated_docx_name] = generated_docx_bytes
471
- logging.info(f"Generated docx saved: {generated_docx_name}")
472
- new_selected_generated = generated_docx_name
473
- elif button_id == 'generate-action-btn':
474
- result, _, _ = process_document('generate', selected_filename, chat_input)
475
- elif button_id == 'compliance-action-btn':
476
- result, _, _ = process_document('compliance', selected_filename, chat_input)
477
- elif button_id == 'recover-action-btn':
478
- result, _, _ = process_document('recover', selected_filename, chat_input)
479
- elif button_id == 'board-action-btn':
480
- result, _, _ = process_document('board', selected_filename, chat_input)
481
- elif button_id == 'loe-action-btn':
482
- result, _, _ = process_document('loe', selected_filename, chat_input)
483
- else:
484
- result = "Action not implemented yet."
485
-
486
- if isinstance(result, str) and result.strip().startswith("Error"):
487
- return html.Div(result, style={"wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], new_selected_generated
488
- if isinstance(result, str) and ("not implemented" in result or "No document uploaded" in result or "Shredding in progress" in result or "Generating response" in result or "Shredded document not available" in result):
489
- return html.Div(result, style={"wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], new_selected_generated
490
- return dcc.Markdown(result, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], new_selected_generated
491
 
492
- @app.callback(
493
- Output('output-data-upload', 'children'),
494
- Input('select-generated-dropdown', 'value'),
495
- prevent_initial_call=True
496
- )
497
- def display_generated_doc(selected_generated):
498
- if not selected_generated or selected_generated not in generated_documents:
499
- return html.Div("No generated document selected.", style={"wordWrap": "break-word"})
500
- docx_bytes = generated_documents[selected_generated]
501
- b64 = base64.b64encode(docx_bytes).decode('utf-8')
502
- download_link = html.A(
503
- f"Download {selected_generated}",
504
- href=f"data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,{b64}",
505
- download=selected_generated,
506
- target="_blank",
507
- style={"wordWrap": "break-word"}
508
- )
509
- return html.Div([
510
- html.Div(download_link, style={"marginBottom": "15px"}),
511
- html.Div("Preview not available for docx. Download to view.", style={"wordWrap": "break-word"})
512
- ])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
513
 
514
  if __name__ == '__main__':
515
  print("Starting the Dash application...")
 
441
  Input('recover-action-btn', 'n_clicks'),
442
  Input('board-action-btn', 'n_clicks'),
443
  Input('loe-action-btn', 'n_clicks'),
444
+ Input('select-generated-dropdown', 'value'),
445
  ],
446
  State('chat-input', 'value'),
447
  State('select-document-dropdown', 'value'),
 
449
  State('select-generated-dropdown', 'value'),
450
  prevent_initial_call=True
451
  )
452
+ def handle_all_actions(
453
+ shred_clicks, generate_clicks, compliance_clicks, recover_clicks, board_clicks, loe_clicks, selected_generated_dropdown,
454
  chat_input, selected_filename, selected_proposal, selected_generated
455
  ):
456
  ctx = callback_context
457
  if not ctx.triggered:
458
  logging.info("No action triggered yet.")
459
  return html.Div("No action taken yet.", style={"wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], selected_generated
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
460
 
461
+ button_ids = [
462
+ 'shred-action-btn', 'generate-action-btn', 'compliance-action-btn',
463
+ 'recover-action-btn', 'board-action-btn', 'loe-action-btn'
464
+ ]
465
+ triggered_id = ctx.triggered[0]['prop_id'].split('.')[0]
466
+ logging.info(f"Trigger: {triggered_id}")
467
+
468
+ # if a button is pressed
469
+ if triggered_id in button_ids:
470
+ result = ""
471
+ generated_docx_bytes = None
472
+ generated_docx_name = None
473
+ new_selected_generated = selected_generated
474
+
475
+ if triggered_id == 'shred-action-btn':
476
+ result, generated_docx_bytes, generated_docx_name = process_document('shred', selected_filename, chat_input)
477
+ if generated_docx_bytes and generated_docx_name:
478
+ generated_documents[generated_docx_name] = generated_docx_bytes
479
+ logging.info(f"Generated docx saved: {generated_docx_name}")
480
+ new_selected_generated = generated_docx_name
481
+ elif triggered_id == 'generate-action-btn':
482
+ result, _, _ = process_document('generate', selected_filename, chat_input)
483
+ elif triggered_id == 'compliance-action-btn':
484
+ result, _, _ = process_document('compliance', selected_filename, chat_input)
485
+ elif triggered_id == 'recover-action-btn':
486
+ result, _, _ = process_document('recover', selected_filename, chat_input)
487
+ elif triggered_id == 'board-action-btn':
488
+ result, _, _ = process_document('board', selected_filename, chat_input)
489
+ elif triggered_id == 'loe-action-btn':
490
+ result, _, _ = process_document('loe', selected_filename, chat_input)
491
+ else:
492
+ result = "Action not implemented yet."
493
+
494
+ if isinstance(result, str) and result.strip().startswith("Error"):
495
+ return html.Div(result, style={"wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], new_selected_generated
496
+ if isinstance(result, str) and ("not implemented" in result or "No document uploaded" in result or "Shredding in progress" in result or "Generating response" in result or "Shredded document not available" in result):
497
+ return html.Div(result, style={"wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], new_selected_generated
498
+ return dcc.Markdown(result, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], new_selected_generated
499
+
500
+ # if the generated doc dropdown is changed
501
+ if triggered_id == 'select-generated-dropdown':
502
+ sel_gen = selected_generated_dropdown
503
+ if not sel_gen or sel_gen not in generated_documents:
504
+ return html.Div("No generated document selected.", style={"wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], sel_gen
505
+ docx_bytes = generated_documents[sel_gen]
506
+ b64 = base64.b64encode(docx_bytes).decode('utf-8')
507
+ download_link = html.A(
508
+ f"Download {sel_gen}",
509
+ href=f"data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,{b64}",
510
+ download=sel_gen,
511
+ target="_blank",
512
+ style={"wordWrap": "break-word"}
513
+ )
514
+ return html.Div([
515
+ html.Div(download_link, style={"marginBottom": "15px"}),
516
+ html.Div("Preview not available for docx. Download to view.", style={"wordWrap": "break-word"})
517
+ ]), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], sel_gen
518
+
519
+ return html.Div("No action taken.", style={"wordWrap": "break-word"}), get_generated_doc_list(generated_documents), [{'label': fn, 'value': fn} for fn in generated_documents.keys()], selected_generated
520
 
521
  if __name__ == '__main__':
522
  print("Starting the Dash application...")