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:
|