bluenevus commited on
Commit
9a9c35a
·
1 Parent(s): 05f1c73

Update app.py via AI Editor

Browse files
Files changed (1) hide show
  1. app.py +7 -47
app.py CHANGED
@@ -652,25 +652,6 @@ def master_callback(
652
  del SESSION_LOCKS[sid]
653
  return html.Div("Session ended. All data cleared.", style={"wordWrap": "break-word"}), None, [], None, None, [], None, "expanded"
654
 
655
- # ACTION BUTTONS: If not shrunk, just shrink and clear preview output, do NOT process action
656
- if triggered_id in [
657
- 'shred-action-btn', 'proposal-action-btn', 'compliance-action-btn',
658
- 'recover-action-btn', 'board-action-btn', 'loe-action-btn', 'cancel-action-btn'
659
- ] and preview_window_state != "shrunk":
660
- # Don't alter session, don't clear docs, don't process action
661
- doc_options = [{'label': fn, 'value': fn} for fn in session_dict['uploaded_documents'].keys()]
662
- doc_value = selected_doc if selected_doc in session_dict['uploaded_documents'] else (next(iter(session_dict['uploaded_documents']), None) if session_dict['uploaded_documents'] else None)
663
- proposal_options = [{'label': fn, 'value': fn} for fn in session_dict['proposals'].keys()]
664
- proposal_value = selected_proposal if selected_proposal in session_dict['proposals'] else (next(iter(session_dict['proposals']), None) if session_dict['proposals'] else None)
665
- documents_list = get_documents_list(session_dict['uploaded_documents'], session_dict['shredded_documents'])
666
- proposals_list = get_proposals_list(session_dict['proposals'])
667
- return (
668
- html.Div("", style={"wordWrap": "break-word"}),
669
- documents_list, doc_options, doc_value,
670
- proposals_list, proposal_options, proposal_value,
671
- "shrunk"
672
- )
673
-
674
  # Cancel should just clear the preview and expand window, not clear session/docs
675
  if triggered_id == 'cancel-action-btn':
676
  doc_options = [{'label': fn, 'value': fn} for fn in session_dict['uploaded_documents'].keys()]
@@ -686,6 +667,7 @@ def master_callback(
686
  "expanded"
687
  )
688
 
 
689
  if triggered_id == 'upload-document' and rfp_content is not None and rfp_filename:
690
  content_type, content_string = rfp_content.split(',')
691
  decoded = base64.b64decode(content_string)
@@ -718,6 +700,7 @@ def master_callback(
718
  else:
719
  logging.error(f"Failed to decode uploaded proposal: {proposal_filename}")
720
 
 
721
  if triggered_id and isinstance(doc_delete_clicks, list):
722
  for i, n_click in enumerate(doc_delete_clicks):
723
  if n_click:
@@ -768,7 +751,9 @@ def master_callback(
768
 
769
  output_data_upload = html.Div("No action taken yet.", style={"wordWrap": "break-word"})
770
 
771
- if triggered_id in ['shred-action-btn', 'compliance-action-btn', 'board-action-btn']:
 
 
772
  got_lock = lock.acquire(blocking=False)
773
  if not got_lock:
774
  output_data_upload = html.Div("Another Gemini operation is in progress. Please wait or cancel.", style={"wordWrap": "break-word"})
@@ -795,33 +780,7 @@ def master_callback(
795
  session_dict, action_name, doc_value, chat_input, uploaded_rfp_decoded_bytes, proposal_value
796
  )
797
  output_data_upload = dcc.Markdown(result, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
798
- finally:
799
- lock.release()
800
- doc_options = [{'label': fn, 'value': fn} for fn in session_dict['uploaded_documents'].keys()]
801
- doc_value = doc_value if doc_value in session_dict['uploaded_documents'] else (next(iter(session_dict['uploaded_documents']), None) if session_dict['uploaded_documents'] else None)
802
- proposal_options = [{'label': fn, 'value': fn} for fn in session_dict['proposals'].keys()]
803
- proposal_value = proposal_value if proposal_value in session_dict['proposals'] else (next(iter(session_dict['proposals']), None) if session_dict['proposals'] else None)
804
- documents_list = get_documents_list(session_dict['uploaded_documents'], session_dict['shredded_documents'])
805
- proposals_list = get_proposals_list(session_dict['proposals'])
806
- return (
807
- output_data_upload,
808
- documents_list, doc_options, doc_value,
809
- proposals_list, proposal_options, proposal_value,
810
- "expanded"
811
- )
812
-
813
- if triggered_id in ['proposal-action-btn', 'recover-action-btn', 'loe-action-btn']:
814
- got_lock = lock.acquire(blocking=False)
815
- if not got_lock:
816
- output_data_upload = html.Div("Another Gemini operation is in progress. Please wait or cancel.", style={"wordWrap": "break-word"})
817
- return (
818
- output_data_upload,
819
- documents_list, doc_options, doc_value,
820
- proposals_list, proposal_options, proposal_value,
821
- "expanded"
822
- )
823
- try:
824
- if triggered_id == "proposal-action-btn":
825
  action_name = "proposal"
826
  selected_bytes = session_dict['uploaded_documents_bytes'].get(doc_value, None)
827
  result, _, _, generated_filename, generated_docx_bytes = process_document(
@@ -842,6 +801,7 @@ def master_callback(
842
  output_data_upload = dcc.Markdown(result, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
843
  finally:
844
  lock.release()
 
845
  doc_options = [{'label': fn, 'value': fn} for fn in session_dict['uploaded_documents'].keys()]
846
  doc_value = doc_value if doc_value in session_dict['uploaded_documents'] else (next(iter(session_dict['uploaded_documents']), None) if session_dict['uploaded_documents'] else None)
847
  proposal_options = [{'label': fn, 'value': fn} for fn in session_dict['proposals'].keys()]
 
652
  del SESSION_LOCKS[sid]
653
  return html.Div("Session ended. All data cleared.", style={"wordWrap": "break-word"}), None, [], None, None, [], None, "expanded"
654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
655
  # Cancel should just clear the preview and expand window, not clear session/docs
656
  if triggered_id == 'cancel-action-btn':
657
  doc_options = [{'label': fn, 'value': fn} for fn in session_dict['uploaded_documents'].keys()]
 
667
  "expanded"
668
  )
669
 
670
+ # File uploads
671
  if triggered_id == 'upload-document' and rfp_content is not None and rfp_filename:
672
  content_type, content_string = rfp_content.split(',')
673
  decoded = base64.b64decode(content_string)
 
700
  else:
701
  logging.error(f"Failed to decode uploaded proposal: {proposal_filename}")
702
 
703
+ # Deletion handling
704
  if triggered_id and isinstance(doc_delete_clicks, list):
705
  for i, n_click in enumerate(doc_delete_clicks):
706
  if n_click:
 
751
 
752
  output_data_upload = html.Div("No action taken yet.", style={"wordWrap": "break-word"})
753
 
754
+ # Action buttons: always process immediately
755
+ if triggered_id in ['shred-action-btn', 'compliance-action-btn', 'board-action-btn',
756
+ 'proposal-action-btn', 'recover-action-btn', 'loe-action-btn']:
757
  got_lock = lock.acquire(blocking=False)
758
  if not got_lock:
759
  output_data_upload = html.Div("Another Gemini operation is in progress. Please wait or cancel.", style={"wordWrap": "break-word"})
 
780
  session_dict, action_name, doc_value, chat_input, uploaded_rfp_decoded_bytes, proposal_value
781
  )
782
  output_data_upload = dcc.Markdown(result, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
783
+ elif triggered_id == "proposal-action-btn":
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
784
  action_name = "proposal"
785
  selected_bytes = session_dict['uploaded_documents_bytes'].get(doc_value, None)
786
  result, _, _, generated_filename, generated_docx_bytes = process_document(
 
801
  output_data_upload = dcc.Markdown(result, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
802
  finally:
803
  lock.release()
804
+ # Update dropdowns and lists after action (in case doc/proposal was auto-created)
805
  doc_options = [{'label': fn, 'value': fn} for fn in session_dict['uploaded_documents'].keys()]
806
  doc_value = doc_value if doc_value in session_dict['uploaded_documents'] else (next(iter(session_dict['uploaded_documents']), None) if session_dict['uploaded_documents'] else None)
807
  proposal_options = [{'label': fn, 'value': fn} for fn in session_dict['proposals'].keys()]