bluenevus commited on
Commit
4bc4fe1
·
1 Parent(s): 5b85317

Update app.py via AI Editor

Browse files
Files changed (1) hide show
  1. app.py +23 -27
app.py CHANGED
@@ -80,6 +80,7 @@ app.layout = html.Div([
80
  })();
81
  '''),
82
  html.A(id='uploaded-file-download-link', href="", style={'display': 'none'}),
 
83
  dcc.Dropdown(id='slide-generation-list', style={'display': 'none'}),
84
  dcc.Download(id="download-dynamic"),
85
  dbc.Container([
@@ -272,17 +273,6 @@ def markdown_to_pptx(md_text, session_id):
272
  prs.save(output)
273
  return output.getvalue()
274
 
275
- def get_pptx_download_button(session):
276
- if session.get('generated_pptx'):
277
- return dbc.Button(
278
- "Download PowerPoint",
279
- id='pptx-download-link',
280
- color="primary",
281
- className="w-100",
282
- n_clicks=0
283
- )
284
- return ""
285
-
286
  @app.callback(
287
  Output('session-id', 'data'),
288
  Input('session-id', 'data')
@@ -334,7 +324,7 @@ def unified_callback(upload_contents, gen_btn, gen_ppt_btn, selected_slide_idx,
334
  id='uploaded-file-download-link-visible',
335
  href="#",
336
  n_clicks=0,
337
- style={'display': 'block'}
338
  )
339
  log_str = '\n'.join(session['log_messages'][:100])
340
 
@@ -354,7 +344,15 @@ def unified_callback(upload_contents, gen_btn, gen_ppt_btn, selected_slide_idx,
354
  )
355
  ]) if slide_list else html.Div("No slides generated yet.", className="text-muted")
356
 
357
- pptx_file_link = get_pptx_download_button(session)
 
 
 
 
 
 
 
 
358
 
359
  if button_id == 'upload-file':
360
  if upload_contents and upload_filename:
@@ -371,14 +369,13 @@ def unified_callback(upload_contents, gen_btn, gen_ppt_btn, selected_slide_idx,
371
  id='uploaded-file-download-link-visible',
372
  href="#",
373
  n_clicks=0,
374
- style={'display': 'block'}
375
  )
376
  log_str = '\n'.join(session['log_messages'][:100])
377
  except Exception as e:
378
  with session['lock']:
379
  session['log_messages'].insert(0, f"{time.strftime('%H:%M:%S')} - Error uploading file: {str(e)}")
380
  log_str = '\n'.join(session['log_messages'][:100])
381
- pptx_file_link = get_pptx_download_button(session)
382
  return upload_file_link, pptx_file_link, slides_content, log_str, slide_dropdown, slide_idx
383
  elif button_id == 'generate-button':
384
  decoded_file_text = None
@@ -392,7 +389,6 @@ def unified_callback(upload_contents, gen_btn, gen_ppt_btn, selected_slide_idx,
392
  with session['lock']:
393
  session['log_messages'].insert(0, f"{time.strftime('%H:%M:%S')} - Could not decode uploaded file as text. Please upload a UTF-8 or Latin-1 encoded text file.")
394
  log_str = '\n'.join(session['log_messages'][:100])
395
- pptx_file_link = get_pptx_download_button(session)
396
  return upload_file_link, pptx_file_link, "Could not decode uploaded file as text. Please upload a UTF-8 or Latin-1 encoded text file.", log_str, slide_dropdown, slide_idx
397
  combined_text = ""
398
  if decoded_file_text and document_text:
@@ -405,7 +401,6 @@ def unified_callback(upload_contents, gen_btn, gen_ppt_btn, selected_slide_idx,
405
  with session['lock']:
406
  session['log_messages'].insert(0, f"{time.strftime('%H:%M:%S')} - Please upload a file or enter text.")
407
  log_str = '\n'.join(session['log_messages'][:100])
408
- pptx_file_link = get_pptx_download_button(session)
409
  return upload_file_link, pptx_file_link, "Please upload a file or enter text.", log_str, slide_dropdown, slide_idx
410
  try:
411
  add_log("Starting slide generation...", session_id)
@@ -434,13 +429,11 @@ def unified_callback(upload_contents, gen_btn, gen_ppt_btn, selected_slide_idx,
434
  style={'marginBottom': '10px'}
435
  )
436
  ])
437
- pptx_file_link = get_pptx_download_button(session)
438
  return upload_file_link, pptx_file_link, slides_md, log_str, slide_dropdown, slide_idx
439
  except Exception as e:
440
  add_log(f"An error occurred during slide generation: {str(e)}", session_id)
441
  with session['lock']:
442
  log_str = '\n'.join(session['log_messages'][:100])
443
- pptx_file_link = get_pptx_download_button(session)
444
  return upload_file_link, pptx_file_link, f"An error occurred: {str(e)}", log_str, slide_dropdown, slide_idx
445
  elif button_id == 'generate-ppt-button':
446
  if not slides_content or not session_id:
@@ -450,7 +443,13 @@ def unified_callback(upload_contents, gen_btn, gen_ppt_btn, selected_slide_idx,
450
  pptx_bytes = markdown_to_pptx(slides_content, session_id)
451
  with session['lock']:
452
  session['generated_pptx'] = pptx_bytes
453
- pptx_file_link = get_pptx_download_button(session)
 
 
 
 
 
 
454
  add_log("PowerPoint generation completed.", session_id)
455
  log_str = '\n'.join(session['log_messages'][:100])
456
  return upload_file_link, pptx_file_link, slides_content, log_str, slide_dropdown, slide_idx
@@ -458,7 +457,6 @@ def unified_callback(upload_contents, gen_btn, gen_ppt_btn, selected_slide_idx,
458
  add_log(f"An error occurred during PowerPoint generation: {str(e)}", session_id)
459
  with session['lock']:
460
  log_str = '\n'.join(session['log_messages'][:100])
461
- pptx_file_link = get_pptx_download_button(session)
462
  return upload_file_link, pptx_file_link, slides_content, log_str, slide_dropdown, slide_idx
463
  elif button_id == 'slide-generation-list':
464
  try:
@@ -467,21 +465,19 @@ def unified_callback(upload_contents, gen_btn, gen_ppt_btn, selected_slide_idx,
467
  slide_idx = selected_slide_idx
468
  else:
469
  slides_md = ""
470
- pptx_file_link = get_pptx_download_button(session)
471
  return upload_file_link, pptx_file_link, slides_md, log_str, slide_dropdown, slide_idx
472
  except Exception as e:
473
  add_log(f"An error occurred while loading slide set: {str(e)}", session_id)
474
  with session['lock']:
475
  log_str = '\n'.join(session['log_messages'][:100])
476
- pptx_file_link = get_pptx_download_button(session)
477
  return upload_file_link, pptx_file_link, slides_content, log_str, slide_dropdown, slide_idx
478
  else:
479
  raise PreventUpdate
480
 
481
  @app.callback(
482
  Output("download-dynamic", "data"),
483
- Input('uploaded-file-download-link', 'n_clicks'),
484
- Input('pptx-download-link', 'n_clicks'),
485
  State('session-id', 'data'),
486
  prevent_initial_call=True
487
  )
@@ -492,9 +488,9 @@ def download_dynamic(uploaded_file_nclicks, pptx_nclicks, session_id):
492
  button_id = ctx.triggered[0]['prop_id'].split('.')[0]
493
  session = get_or_create_session_data(session_id)
494
  with session['lock']:
495
- if button_id == 'uploaded-file-download-link' and session.get('uploaded_file') and session.get('uploaded_filename'):
496
  return dcc.send_bytes(session['uploaded_file'], session['uploaded_filename'])
497
- if button_id == 'pptx-download-link' and session.get('generated_pptx'):
498
  return dcc.send_bytes(session['generated_pptx'], "presentation.pptx")
499
  raise PreventUpdate
500
 
 
80
  })();
81
  '''),
82
  html.A(id='uploaded-file-download-link', href="", style={'display': 'none'}),
83
+ html.A(id='pptx-file-download-link', href="", style={'display': 'none'}),
84
  dcc.Dropdown(id='slide-generation-list', style={'display': 'none'}),
85
  dcc.Download(id="download-dynamic"),
86
  dbc.Container([
 
273
  prs.save(output)
274
  return output.getvalue()
275
 
 
 
 
 
 
 
 
 
 
 
 
276
  @app.callback(
277
  Output('session-id', 'data'),
278
  Input('session-id', 'data')
 
324
  id='uploaded-file-download-link-visible',
325
  href="#",
326
  n_clicks=0,
327
+ style={'display': 'block', 'cursor': 'pointer', 'color': '#116F70', 'textDecoration': 'underline'}
328
  )
329
  log_str = '\n'.join(session['log_messages'][:100])
330
 
 
344
  )
345
  ]) if slide_list else html.Div("No slides generated yet.", className="text-muted")
346
 
347
+ pptx_file_link = ""
348
+ if session.get('generated_pptx'):
349
+ pptx_file_link = html.A(
350
+ "presentation.pptx",
351
+ id='pptx-file-download-link-visible',
352
+ href="#",
353
+ n_clicks=0,
354
+ style={'display': 'block', 'cursor': 'pointer', 'color': '#116F70', 'textDecoration': 'underline'}
355
+ )
356
 
357
  if button_id == 'upload-file':
358
  if upload_contents and upload_filename:
 
369
  id='uploaded-file-download-link-visible',
370
  href="#",
371
  n_clicks=0,
372
+ style={'display': 'block', 'cursor': 'pointer', 'color': '#116F70', 'textDecoration': 'underline'}
373
  )
374
  log_str = '\n'.join(session['log_messages'][:100])
375
  except Exception as e:
376
  with session['lock']:
377
  session['log_messages'].insert(0, f"{time.strftime('%H:%M:%S')} - Error uploading file: {str(e)}")
378
  log_str = '\n'.join(session['log_messages'][:100])
 
379
  return upload_file_link, pptx_file_link, slides_content, log_str, slide_dropdown, slide_idx
380
  elif button_id == 'generate-button':
381
  decoded_file_text = None
 
389
  with session['lock']:
390
  session['log_messages'].insert(0, f"{time.strftime('%H:%M:%S')} - Could not decode uploaded file as text. Please upload a UTF-8 or Latin-1 encoded text file.")
391
  log_str = '\n'.join(session['log_messages'][:100])
 
392
  return upload_file_link, pptx_file_link, "Could not decode uploaded file as text. Please upload a UTF-8 or Latin-1 encoded text file.", log_str, slide_dropdown, slide_idx
393
  combined_text = ""
394
  if decoded_file_text and document_text:
 
401
  with session['lock']:
402
  session['log_messages'].insert(0, f"{time.strftime('%H:%M:%S')} - Please upload a file or enter text.")
403
  log_str = '\n'.join(session['log_messages'][:100])
 
404
  return upload_file_link, pptx_file_link, "Please upload a file or enter text.", log_str, slide_dropdown, slide_idx
405
  try:
406
  add_log("Starting slide generation...", session_id)
 
429
  style={'marginBottom': '10px'}
430
  )
431
  ])
 
432
  return upload_file_link, pptx_file_link, slides_md, log_str, slide_dropdown, slide_idx
433
  except Exception as e:
434
  add_log(f"An error occurred during slide generation: {str(e)}", session_id)
435
  with session['lock']:
436
  log_str = '\n'.join(session['log_messages'][:100])
 
437
  return upload_file_link, pptx_file_link, f"An error occurred: {str(e)}", log_str, slide_dropdown, slide_idx
438
  elif button_id == 'generate-ppt-button':
439
  if not slides_content or not session_id:
 
443
  pptx_bytes = markdown_to_pptx(slides_content, session_id)
444
  with session['lock']:
445
  session['generated_pptx'] = pptx_bytes
446
+ pptx_file_link = html.A(
447
+ "presentation.pptx",
448
+ id='pptx-file-download-link-visible',
449
+ href="#",
450
+ n_clicks=0,
451
+ style={'display': 'block', 'cursor': 'pointer', 'color': '#116F70', 'textDecoration': 'underline'}
452
+ )
453
  add_log("PowerPoint generation completed.", session_id)
454
  log_str = '\n'.join(session['log_messages'][:100])
455
  return upload_file_link, pptx_file_link, slides_content, log_str, slide_dropdown, slide_idx
 
457
  add_log(f"An error occurred during PowerPoint generation: {str(e)}", session_id)
458
  with session['lock']:
459
  log_str = '\n'.join(session['log_messages'][:100])
 
460
  return upload_file_link, pptx_file_link, slides_content, log_str, slide_dropdown, slide_idx
461
  elif button_id == 'slide-generation-list':
462
  try:
 
465
  slide_idx = selected_slide_idx
466
  else:
467
  slides_md = ""
 
468
  return upload_file_link, pptx_file_link, slides_md, log_str, slide_dropdown, slide_idx
469
  except Exception as e:
470
  add_log(f"An error occurred while loading slide set: {str(e)}", session_id)
471
  with session['lock']:
472
  log_str = '\n'.join(session['log_messages'][:100])
 
473
  return upload_file_link, pptx_file_link, slides_content, log_str, slide_dropdown, slide_idx
474
  else:
475
  raise PreventUpdate
476
 
477
  @app.callback(
478
  Output("download-dynamic", "data"),
479
+ Input('uploaded-file-download-link-visible', 'n_clicks'),
480
+ Input('pptx-file-download-link-visible', 'n_clicks'),
481
  State('session-id', 'data'),
482
  prevent_initial_call=True
483
  )
 
488
  button_id = ctx.triggered[0]['prop_id'].split('.')[0]
489
  session = get_or_create_session_data(session_id)
490
  with session['lock']:
491
+ if button_id == 'uploaded-file-download-link-visible' and session.get('uploaded_file') and session.get('uploaded_filename'):
492
  return dcc.send_bytes(session['uploaded_file'], session['uploaded_filename'])
493
+ if button_id == 'pptx-file-download-link-visible' and session.get('generated_pptx'):
494
  return dcc.send_bytes(session['generated_pptx'], "presentation.pptx")
495
  raise PreventUpdate
496