bluenevus commited on
Commit
148203e
·
1 Parent(s): fbca851

Update app.py via AI Editor

Browse files
Files changed (1) hide show
  1. app.py +14 -10
app.py CHANGED
@@ -188,7 +188,6 @@ def process_document(action, selected_filename=None, chat_input=None):
188
  if result_holder["docx_bytes"] and result_holder["docx_name"]:
189
  docx_name = result_holder["docx_name"]
190
  try:
191
- # We'll store the text as the plain shredded text (not binary docx) in uploaded_documents
192
  uploaded_documents[docx_name] = result_holder["text"]
193
  except Exception as e:
194
  logging.error(f"Error adding shredded docx to uploaded_documents: {e}")
@@ -549,7 +548,7 @@ def master_callback(
549
  del uploaded_documents_fileid[del_filename]
550
  logging.info(f"Document deleted: {del_filename}")
551
  if selected_doc == del_filename:
552
- selected_doc = next(iter(uploaded_documents), None)
553
  upload_triggered = True
554
  break
555
 
@@ -568,7 +567,7 @@ def master_callback(
568
  del uploaded_proposals_fileid[del_filename]
569
  logging.info(f"Proposal deleted: {del_filename}")
570
  if selected_proposal == del_filename:
571
- selected_proposal = next(iter(uploaded_proposals), None)
572
  upload_triggered = True
573
  break
574
 
@@ -581,7 +580,7 @@ def master_callback(
581
  del generated_documents[del_filename]
582
  logging.info(f"Generated doc deleted: {del_filename}")
583
  if selected_generated == del_filename:
584
- selected_generated = next(iter(generated_documents), None)
585
  upload_triggered = True
586
  break
587
 
@@ -596,6 +595,7 @@ def master_callback(
596
  upload_triggered = True
597
  break
598
 
 
599
  doc_options = [{'label': fn, 'value': fn} for fn in uploaded_documents.keys()]
600
  doc_value = selected_doc if selected_doc in uploaded_documents else (next(iter(uploaded_documents), None) if uploaded_documents else None)
601
  shredded_doc_list_items = get_shredded_doc_list(shredded_documents)
@@ -608,21 +608,20 @@ def master_callback(
608
 
609
  if triggered_id == 'shred-action-btn':
610
  output_data_upload = dcc.Loading(type="default", children=html.Div("Shredding document...", style={"wordWrap": "break-word"}))
611
- shred_text, shredded_docx_bytes, shredded_docx_name, shredded_text = process_document('shred', selected_filename, chat_input)
612
  shred_store = {'text': shred_text, 'docx_bytes': shredded_docx_bytes, 'docx_name': shredded_docx_name}
613
 
614
  if shredded_docx_bytes and shredded_docx_name:
615
  shredded_documents[shredded_docx_name] = shredded_docx_bytes
616
  logging.info(f"Shredded docx saved: {shredded_docx_name}")
617
- # Add shredded docx to uploaded_documents as text so it appears as selectable
618
  if shredded_docx_name not in uploaded_documents:
619
  uploaded_documents[shredded_docx_name] = shredded_text
 
620
  doc_options = [{'label': fn, 'value': fn} for fn in uploaded_documents.keys()]
621
- doc_value = shredded_docx_name
622
  uploaded_doc_list = get_uploaded_doc_list(uploaded_documents)
623
  shredded_doc_list_items = get_shredded_doc_list(shredded_documents)
624
  output_data_upload = dcc.Markdown(shred_text, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
625
-
626
  return (
627
  shred_store, proposal_store, output_data_upload,
628
  uploaded_doc_list, doc_options, doc_value,
@@ -632,13 +631,13 @@ def master_callback(
632
 
633
  if triggered_id == 'proposal-action-btn':
634
  output_data_upload = dcc.Loading(type="default", children=html.Div("Generating proposal...", style={"wordWrap": "break-word"}))
635
- proposal_text, proposal_docx_bytes, proposal_docx_name, proposal_text_preview = process_document('proposal', selected_filename, chat_input)
636
  proposal_store = {'text': proposal_text, 'docx_bytes': proposal_docx_bytes, 'docx_name': proposal_docx_name}
637
  new_generated_doc_value = generated_doc_value
638
  if proposal_docx_bytes and proposal_docx_name:
639
  generated_documents[proposal_docx_name] = proposal_docx_bytes
640
  generated_doc_options = [{'label': fn, 'value': fn} for fn in generated_documents.keys()]
641
- new_generated_doc_value = proposal_docx_name
642
  generated_doc_list = get_generated_doc_list(generated_documents)
643
  logging.info(f"Generated proposal docx saved: {proposal_docx_name}")
644
  output_data_upload = dcc.Markdown(proposal_text, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
@@ -675,6 +674,8 @@ def master_callback(
675
  )
676
 
677
  if upload_triggered:
 
 
678
  output_data_upload = html.Div("Upload/Delete completed.", style={"wordWrap": "break-word"})
679
  return (
680
  shred_store, proposal_store, output_data_upload,
@@ -683,6 +684,9 @@ def master_callback(
683
  generated_doc_list, generated_doc_options, generated_doc_value
684
  )
685
 
 
 
 
686
  return (
687
  shred_store, proposal_store, output_data_upload,
688
  uploaded_doc_list, doc_options, doc_value,
 
188
  if result_holder["docx_bytes"] and result_holder["docx_name"]:
189
  docx_name = result_holder["docx_name"]
190
  try:
 
191
  uploaded_documents[docx_name] = result_holder["text"]
192
  except Exception as e:
193
  logging.error(f"Error adding shredded docx to uploaded_documents: {e}")
 
548
  del uploaded_documents_fileid[del_filename]
549
  logging.info(f"Document deleted: {del_filename}")
550
  if selected_doc == del_filename:
551
+ selected_doc = None
552
  upload_triggered = True
553
  break
554
 
 
567
  del uploaded_proposals_fileid[del_filename]
568
  logging.info(f"Proposal deleted: {del_filename}")
569
  if selected_proposal == del_filename:
570
+ selected_proposal = None
571
  upload_triggered = True
572
  break
573
 
 
580
  del generated_documents[del_filename]
581
  logging.info(f"Generated doc deleted: {del_filename}")
582
  if selected_generated == del_filename:
583
+ selected_generated = None
584
  upload_triggered = True
585
  break
586
 
 
595
  upload_triggered = True
596
  break
597
 
598
+ # Always recalculate options/values after any operation
599
  doc_options = [{'label': fn, 'value': fn} for fn in uploaded_documents.keys()]
600
  doc_value = selected_doc if selected_doc in uploaded_documents else (next(iter(uploaded_documents), None) if uploaded_documents else None)
601
  shredded_doc_list_items = get_shredded_doc_list(shredded_documents)
 
608
 
609
  if triggered_id == 'shred-action-btn':
610
  output_data_upload = dcc.Loading(type="default", children=html.Div("Shredding document...", style={"wordWrap": "break-word"}))
611
+ shred_text, shredded_docx_bytes, shredded_docx_name, shredded_text = process_document('shred', doc_value, chat_input)
612
  shred_store = {'text': shred_text, 'docx_bytes': shredded_docx_bytes, 'docx_name': shredded_docx_name}
613
 
614
  if shredded_docx_bytes and shredded_docx_name:
615
  shredded_documents[shredded_docx_name] = shredded_docx_bytes
616
  logging.info(f"Shredded docx saved: {shredded_docx_name}")
 
617
  if shredded_docx_name not in uploaded_documents:
618
  uploaded_documents[shredded_docx_name] = shredded_text
619
+ # Recompute options/values after updating
620
  doc_options = [{'label': fn, 'value': fn} for fn in uploaded_documents.keys()]
621
+ doc_value = shredded_docx_name if shredded_docx_name in uploaded_documents else (next(iter(uploaded_documents), None) if uploaded_documents else None)
622
  uploaded_doc_list = get_uploaded_doc_list(uploaded_documents)
623
  shredded_doc_list_items = get_shredded_doc_list(shredded_documents)
624
  output_data_upload = dcc.Markdown(shred_text, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
 
625
  return (
626
  shred_store, proposal_store, output_data_upload,
627
  uploaded_doc_list, doc_options, doc_value,
 
631
 
632
  if triggered_id == 'proposal-action-btn':
633
  output_data_upload = dcc.Loading(type="default", children=html.Div("Generating proposal...", style={"wordWrap": "break-word"}))
634
+ proposal_text, proposal_docx_bytes, proposal_docx_name, proposal_text_preview = process_document('proposal', doc_value, chat_input)
635
  proposal_store = {'text': proposal_text, 'docx_bytes': proposal_docx_bytes, 'docx_name': proposal_docx_name}
636
  new_generated_doc_value = generated_doc_value
637
  if proposal_docx_bytes and proposal_docx_name:
638
  generated_documents[proposal_docx_name] = proposal_docx_bytes
639
  generated_doc_options = [{'label': fn, 'value': fn} for fn in generated_documents.keys()]
640
+ new_generated_doc_value = proposal_docx_name if proposal_docx_name in generated_documents else (next(iter(generated_documents), None) if generated_documents else None)
641
  generated_doc_list = get_generated_doc_list(generated_documents)
642
  logging.info(f"Generated proposal docx saved: {proposal_docx_name}")
643
  output_data_upload = dcc.Markdown(proposal_text, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
 
674
  )
675
 
676
  if upload_triggered:
677
+ doc_value = doc_value if doc_value in uploaded_documents else (next(iter(uploaded_documents), None) if uploaded_documents else None)
678
+ generated_doc_value = generated_doc_value if generated_doc_value in generated_documents else (next(iter(generated_documents), None) if generated_documents else None)
679
  output_data_upload = html.Div("Upload/Delete completed.", style={"wordWrap": "break-word"})
680
  return (
681
  shred_store, proposal_store, output_data_upload,
 
684
  generated_doc_list, generated_doc_options, generated_doc_value
685
  )
686
 
687
+ # Always return 10 outputs
688
+ doc_value = doc_value if doc_value in uploaded_documents else (next(iter(uploaded_documents), None) if uploaded_documents else None)
689
+ generated_doc_value = generated_doc_value if generated_doc_value in generated_documents else (next(iter(generated_documents), None) if generated_documents else None)
690
  return (
691
  shred_store, proposal_store, output_data_upload,
692
  uploaded_doc_list, doc_options, doc_value,