bluenevus commited on
Commit
d555284
·
1 Parent(s): 4aef3ed

Update app.py via AI Editor

Browse files
Files changed (1) hide show
  1. app.py +26 -2
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
- return stores + [file_list, uploaded_doc_name_shred, dash.no_update, dash.no_update, dash.no_update, loader_trigger]
 
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
- preview = html.Div("No document loaded.")
 
 
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(