bluenevus commited on
Commit
aca96fb
·
1 Parent(s): 5f3bd8e

Update app.py via AI Editor

Browse files
Files changed (1) hide show
  1. app.py +12 -5
app.py CHANGED
@@ -30,6 +30,7 @@ MAX_OUTPUT_TOKENS = 65536
30
 
31
  uploaded_documents = {}
32
  uploaded_documents_fileid = {}
 
33
  proposals = {}
34
  proposals_fileid = {}
35
  shredded_documents = {}
@@ -149,7 +150,7 @@ def process_document(action, selected_filename=None, chat_input=None, rfp_decode
149
 
150
  doc_content = None
151
  doc_fileid = None
152
- if action in ["shred", "compliance", "virtual_board"]:
153
  if selected_filename and selected_filename in uploaded_documents:
154
  doc_content = uploaded_documents[selected_filename]
155
  doc_fileid = uploaded_documents_fileid.get(selected_filename)
@@ -223,9 +224,10 @@ def process_document(action, selected_filename=None, chat_input=None, rfp_decode
223
  return "No RFP/SOW/PWS/RFI document selected.", None, None, None, None
224
  rfp_filename = selected_filename
225
  rfp_fileid = uploaded_documents_fileid.get(selected_filename)
226
- if not rfp_fileid and rfp_decoded_bytes is not None:
 
227
  try:
228
- fileid = upload_to_gemini_file(rfp_decoded_bytes, rfp_filename)
229
  if fileid:
230
  uploaded_documents_fileid[rfp_filename] = fileid
231
  rfp_fileid = fileid
@@ -458,7 +460,7 @@ def master_callback(
458
  proposal_delete_clicks = safe_get_n_clicks(ctx, 9)
459
  uploaded_rfp_decoded_bytes = None
460
 
461
- global gemini_lock
462
 
463
  if triggered_id == 'cancel-action-btn':
464
  output_data_upload = html.Div("[Cancelled by user]\n", style={"wordWrap": "break-word"})
@@ -484,6 +486,7 @@ def master_callback(
484
  fileid = upload_to_gemini_file(decoded, rfp_filename)
485
  if text is not None:
486
  uploaded_documents[rfp_filename] = text
 
487
  if fileid:
488
  uploaded_documents_fileid[rfp_filename] = fileid
489
  logging.info(f"Document uploaded: {rfp_filename}")
@@ -518,6 +521,8 @@ def master_callback(
518
  except Exception as e:
519
  logging.warning(f"Failed to delete Gemini file {del_filename}: {e}")
520
  del uploaded_documents_fileid[del_filename]
 
 
521
  logging.info(f"Document deleted: {del_filename}")
522
  if del_filename in shredded_documents:
523
  del shredded_documents[del_filename]
@@ -609,9 +614,11 @@ def master_callback(
609
  action_name = "loe"
610
  else:
611
  action_name = None
 
 
612
  if action_name:
613
  result, _, _, generated_filename, generated_docx_bytes = process_document(
614
- action_name, doc_value, chat_input, uploaded_rfp_decoded_bytes, None
615
  )
616
  output_data_upload = dcc.Markdown(result, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
617
  finally:
 
30
 
31
  uploaded_documents = {}
32
  uploaded_documents_fileid = {}
33
+ uploaded_documents_bytes = {}
34
  proposals = {}
35
  proposals_fileid = {}
36
  shredded_documents = {}
 
150
 
151
  doc_content = None
152
  doc_fileid = None
153
+ if action in ["shred", "compliance", "virtual_board", "proposal"]:
154
  if selected_filename and selected_filename in uploaded_documents:
155
  doc_content = uploaded_documents[selected_filename]
156
  doc_fileid = uploaded_documents_fileid.get(selected_filename)
 
224
  return "No RFP/SOW/PWS/RFI document selected.", None, None, None, None
225
  rfp_filename = selected_filename
226
  rfp_fileid = uploaded_documents_fileid.get(selected_filename)
227
+ # Try to upload to Gemini if fileid missing and we have bytes
228
+ if not rfp_fileid and rfp_filename in uploaded_documents_bytes:
229
  try:
230
+ fileid = upload_to_gemini_file(uploaded_documents_bytes[rfp_filename], rfp_filename)
231
  if fileid:
232
  uploaded_documents_fileid[rfp_filename] = fileid
233
  rfp_fileid = fileid
 
460
  proposal_delete_clicks = safe_get_n_clicks(ctx, 9)
461
  uploaded_rfp_decoded_bytes = None
462
 
463
+ global gemini_lock, uploaded_documents_bytes
464
 
465
  if triggered_id == 'cancel-action-btn':
466
  output_data_upload = html.Div("[Cancelled by user]\n", style={"wordWrap": "break-word"})
 
486
  fileid = upload_to_gemini_file(decoded, rfp_filename)
487
  if text is not None:
488
  uploaded_documents[rfp_filename] = text
489
+ uploaded_documents_bytes[rfp_filename] = decoded
490
  if fileid:
491
  uploaded_documents_fileid[rfp_filename] = fileid
492
  logging.info(f"Document uploaded: {rfp_filename}")
 
521
  except Exception as e:
522
  logging.warning(f"Failed to delete Gemini file {del_filename}: {e}")
523
  del uploaded_documents_fileid[del_filename]
524
+ if del_filename in uploaded_documents_bytes:
525
+ del uploaded_documents_bytes[del_filename]
526
  logging.info(f"Document deleted: {del_filename}")
527
  if del_filename in shredded_documents:
528
  del shredded_documents[del_filename]
 
614
  action_name = "loe"
615
  else:
616
  action_name = None
617
+ # For proposal, always use the selected doc_value and its bytes if available
618
+ selected_bytes = uploaded_documents_bytes.get(doc_value, None)
619
  if action_name:
620
  result, _, _, generated_filename, generated_docx_bytes = process_document(
621
+ action_name, doc_value, chat_input, selected_bytes, None
622
  )
623
  output_data_upload = dcc.Markdown(result, style={"whiteSpace": "pre-wrap", "wordWrap": "break-word"})
624
  finally: