Spaces:
Paused
Paused
Update app.py via AI Editor
Browse files
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
|
|
|
|
| 227 |
try:
|
| 228 |
-
fileid = upload_to_gemini_file(
|
| 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,
|
| 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:
|