Spaces:
Paused
Paused
Update app.py via AI Editor
Browse files
app.py
CHANGED
@@ -545,6 +545,8 @@ def update_right_col(selected_type):
|
|
545 |
)
|
546 |
def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, selected_type,
|
547 |
filenames_lists, shred, pink, pink_review, red, red_review, gold, gold_review, loe, virtual_board, prev_generated):
|
|
|
|
|
548 |
stores = [shred, pink, pink_review, red, red_review, gold, gold_review, loe, virtual_board]
|
549 |
file_list = []
|
550 |
uploaded_doc_name_shred = dash.no_update
|
@@ -568,6 +570,8 @@ def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, s
|
|
568 |
}
|
569 |
|
570 |
loader_trigger = time.time()
|
|
|
|
|
571 |
if "upload-doc-type" in trigger:
|
572 |
for i, (contents, filenames) in enumerate(zip(contents_lists, filenames_lists)):
|
573 |
if contents and filenames:
|
@@ -580,6 +584,7 @@ def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, s
|
|
580 |
content = contents[-1]
|
581 |
name = filenames[-1]
|
582 |
file_text = process_document(content, name)
|
|
|
583 |
set_uploaded_doc(subtype, file_text, name)
|
584 |
stores[idx] = file_text
|
585 |
if subtype == "shred":
|
@@ -596,6 +601,7 @@ def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, s
|
|
596 |
], id={'type': 'file-row', 'index': name}, align="center", className="mb-1")
|
597 |
]
|
598 |
uploaded_doc_name_shred = name
|
|
|
599 |
if subtype == "shred":
|
600 |
preview = markdown_table_preview(file_text)
|
601 |
elif subtype in ["pink", "red", "gold"]:
|
@@ -604,8 +610,10 @@ def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, s
|
|
604 |
preview = markdown_table_preview(file_text)
|
605 |
generated_doc = dash.no_update
|
606 |
download_data = dash.no_update
|
|
|
607 |
return stores + [file_list, uploaded_doc_name_shred, preview, generated_doc, download_data, loader_trigger]
|
608 |
|
|
|
609 |
if any(n_clicks_generate_list):
|
610 |
logging.info(f"Generating document for type: {selected_type}")
|
611 |
inputs = {
|
@@ -628,6 +636,7 @@ def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, s
|
|
628 |
context += f"\n\n{inputs.get('shred','')}"
|
629 |
full_prompt = f"{prompt}\n\n{context}"
|
630 |
result_holder = {}
|
|
|
631 |
def gemini_thread():
|
632 |
try:
|
633 |
model = genai.GenerativeModel(GEMINI_MODEL)
|
@@ -641,13 +650,18 @@ def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, s
|
|
641 |
t.start()
|
642 |
t.join(timeout=60)
|
643 |
generated_doc = result_holder.get('result', 'Error: No document generated.')
|
|
|
|
|
644 |
set_generated_doc(selected_type, generated_doc)
|
|
|
645 |
if selected_type in spreadsheet_types:
|
646 |
preview = markdown_table_preview(generated_doc)
|
647 |
else:
|
648 |
preview = markdown_narrative_preview(generated_doc)
|
|
|
649 |
return stores + [file_list, uploaded_doc_name_shred, preview, generated_doc, dash.no_update, loader_trigger]
|
650 |
|
|
|
651 |
if "btn-download" in trigger:
|
652 |
doc = prev_generated
|
653 |
if not doc:
|
@@ -673,7 +687,8 @@ def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, s
|
|
673 |
doc = stores[8]
|
674 |
if not doc:
|
675 |
logging.warning("No generated document to download.")
|
676 |
-
|
|
|
677 |
if selected_type in spreadsheet_types:
|
678 |
xlsx_io = markdown_tables_to_xlsx(doc)
|
679 |
logging.info("Spreadsheet document prepared for download.")
|
@@ -685,6 +700,13 @@ def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, s
|
|
685 |
download_data = dcc.send_bytes(content, filename=f"{selected_type}_output.md")
|
686 |
return stores + [file_list, uploaded_doc_name_shred, dash.no_update, dash.no_update, download_data, loader_trigger]
|
687 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
688 |
doc = prev_generated
|
689 |
if not doc:
|
690 |
doc = get_generated_doc(selected_type)
|
@@ -715,7 +737,9 @@ def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, s
|
|
715 |
doc = doc_store.get(selected_type, "")
|
716 |
preview = markdown_narrative_preview(doc)
|
717 |
else:
|
718 |
-
|
|
|
|
|
719 |
return stores + [file_list, uploaded_doc_name_shred, preview, doc, dash.no_update, loader_trigger]
|
720 |
|
721 |
@app.callback(
|
|
|
545 |
)
|
546 |
def unified_handler(contents_lists, n_clicks_generate_list, n_clicks_download, selected_type,
|
547 |
filenames_lists, shred, pink, pink_review, red, red_review, gold, gold_review, loe, virtual_board, prev_generated):
|
548 |
+
logging.info(f"unified_handler triggered. Trigger: {callback_context.triggered}")
|
549 |
+
|
550 |
stores = [shred, pink, pink_review, red, red_review, gold, gold_review, loe, virtual_board]
|
551 |
file_list = []
|
552 |
uploaded_doc_name_shred = dash.no_update
|
|
|
570 |
}
|
571 |
|
572 |
loader_trigger = time.time()
|
573 |
+
|
574 |
+
# Handle file upload
|
575 |
if "upload-doc-type" in trigger:
|
576 |
for i, (contents, filenames) in enumerate(zip(contents_lists, filenames_lists)):
|
577 |
if contents and filenames:
|
|
|
584 |
content = contents[-1]
|
585 |
name = filenames[-1]
|
586 |
file_text = process_document(content, name)
|
587 |
+
logging.info(f"Processed uploaded file for subtype '{subtype}': {name}")
|
588 |
set_uploaded_doc(subtype, file_text, name)
|
589 |
stores[idx] = file_text
|
590 |
if subtype == "shred":
|
|
|
601 |
], id={'type': 'file-row', 'index': name}, align="center", className="mb-1")
|
602 |
]
|
603 |
uploaded_doc_name_shred = name
|
604 |
+
# Preview logic with fallback
|
605 |
if subtype == "shred":
|
606 |
preview = markdown_table_preview(file_text)
|
607 |
elif subtype in ["pink", "red", "gold"]:
|
|
|
610 |
preview = markdown_table_preview(file_text)
|
611 |
generated_doc = dash.no_update
|
612 |
download_data = dash.no_update
|
613 |
+
logging.info("Returning after file upload.")
|
614 |
return stores + [file_list, uploaded_doc_name_shred, preview, generated_doc, download_data, loader_trigger]
|
615 |
|
616 |
+
# Handle document generation
|
617 |
if any(n_clicks_generate_list):
|
618 |
logging.info(f"Generating document for type: {selected_type}")
|
619 |
inputs = {
|
|
|
636 |
context += f"\n\n{inputs.get('shred','')}"
|
637 |
full_prompt = f"{prompt}\n\n{context}"
|
638 |
result_holder = {}
|
639 |
+
|
640 |
def gemini_thread():
|
641 |
try:
|
642 |
model = genai.GenerativeModel(GEMINI_MODEL)
|
|
|
650 |
t.start()
|
651 |
t.join(timeout=60)
|
652 |
generated_doc = result_holder.get('result', 'Error: No document generated.')
|
653 |
+
logging.info(f"Gemini API returned: {generated_doc[:500]}") # LOGGING LINE
|
654 |
+
|
655 |
set_generated_doc(selected_type, generated_doc)
|
656 |
+
# Preview with fallback
|
657 |
if selected_type in spreadsheet_types:
|
658 |
preview = markdown_table_preview(generated_doc)
|
659 |
else:
|
660 |
preview = markdown_narrative_preview(generated_doc)
|
661 |
+
logging.info("Returning after document generation.")
|
662 |
return stores + [file_list, uploaded_doc_name_shred, preview, generated_doc, dash.no_update, loader_trigger]
|
663 |
|
664 |
+
# Handle download
|
665 |
if "btn-download" in trigger:
|
666 |
doc = prev_generated
|
667 |
if not doc:
|
|
|
687 |
doc = stores[8]
|
688 |
if not doc:
|
689 |
logging.warning("No generated document to download.")
|
690 |
+
preview = html.Div("No document loaded or generated.")
|
691 |
+
return stores + [file_list, uploaded_doc_name_shred, preview, dash.no_update, dash.no_update, loader_trigger]
|
692 |
if selected_type in spreadsheet_types:
|
693 |
xlsx_io = markdown_tables_to_xlsx(doc)
|
694 |
logging.info("Spreadsheet document prepared for download.")
|
|
|
700 |
download_data = dcc.send_bytes(content, filename=f"{selected_type}_output.md")
|
701 |
return stores + [file_list, uploaded_doc_name_shred, dash.no_update, dash.no_update, download_data, loader_trigger]
|
702 |
|
703 |
+
# Fallback: test preview with hardcoded table if Shred and no doc
|
704 |
+
if selected_type == "Shred" and not stores[0]:
|
705 |
+
logging.info("Testing preview with hardcoded markdown table (Shred, no doc).")
|
706 |
+
preview = markdown_table_preview("| Col1 | Col2 |\n|---|---|\n| a | b |")
|
707 |
+
return stores + [file_list, uploaded_doc_name_shred, preview, dash.no_update, dash.no_update, loader_trigger]
|
708 |
+
|
709 |
+
# Default preview logic
|
710 |
doc = prev_generated
|
711 |
if not doc:
|
712 |
doc = get_generated_doc(selected_type)
|
|
|
737 |
doc = doc_store.get(selected_type, "")
|
738 |
preview = markdown_narrative_preview(doc)
|
739 |
else:
|
740 |
+
logging.warning("No document content found for preview.")
|
741 |
+
preview = html.Div("No document loaded or generated.")
|
742 |
+
|
743 |
return stores + [file_list, uploaded_doc_name_shred, preview, doc, dash.no_update, loader_trigger]
|
744 |
|
745 |
@app.callback(
|