Spaces:
Sleeping
Sleeping
File size: 3,936 Bytes
352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec 352ebdd b2638ec |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
import gradio as gr
import logging
from app.document_handling import upload_and_index, list_indexed_files, delete_file_from_database
from app.functions.database_handling import list_databases
def create_document_management_tab(update_all_dropdowns=None):
"""Crea il tab 'Gestione Documenti' dell'interfaccia Gradio."""
def upload_and_index_callback(files, title, author, db_name):
"""Carica e indicizza i documenti, quindi aggiorna la lista dei file."""
try:
status = upload_and_index(files, title, author, db_name)
logging.info(f"Upload completato: {status}")
return status
except Exception as e:
logging.error(f"Errore durante l'upload: {str(e)}")
return f"Errore: {str(e)}"
def list_files_callback(db_name):
"""Elenca i file indicizzati nel database specificato."""
files = list_indexed_files(db_name)
return files
def delete_file_callback(file_name, db_name):
"""Elimina un file dal database e aggiorna la lista."""
status = delete_file_from_database(file_name, db_name)
return status
# Ottieni la lista dei database
databases = list_databases()
with gr.Tab("Gestione Documenti"):
with gr.Column():
gr.Markdown("### Carica Documenti")
with gr.Row():
file_input = gr.File(
label="Carica i tuoi documenti",
file_types=[".txt", ".pdf", ".docx"],
file_count="multiple"
)
db_name_upload = gr.Dropdown(
choices=databases,
label="Seleziona Database",
value="default_db"
)
with gr.Row():
title_input = gr.Textbox(label="Titolo del documento")
author_input = gr.Textbox(label="Autore")
upload_button = gr.Button("Indicizza Documenti")
upload_output = gr.Textbox(label="Stato Upload")
gr.Markdown("### Gestione File")
with gr.Row():
db_name_list = gr.Dropdown(
choices=databases,
label="Database",
value="default_db"
)
list_button = gr.Button("Lista File")
list_output = gr.Textbox(label="File nel Database")
with gr.Row():
delete_file_input = gr.Textbox(label="Nome File da Eliminare")
delete_file_button = gr.Button("Elimina File")
delete_file_output = gr.Textbox(label="Stato Eliminazione")
# Eventi
upload_button.click(
fn=upload_and_index_callback,
inputs=[file_input, title_input, author_input, db_name_upload],
outputs=upload_output
).then(
fn=update_all_dropdowns, # <--- callback globale
inputs=[],
outputs=[db_name_upload, db_name_list]
).then(
fn=list_files_callback,
inputs=[db_name_list],
outputs=list_output
)
list_button.click(
fn=list_files_callback,
inputs=[db_name_list],
outputs=list_output
)
delete_file_button.click(
fn=delete_file_callback,
inputs=[delete_file_input, db_name_list],
outputs=delete_file_output
).then(
fn=update_all_dropdowns, # <--- callback globale
inputs=[],
outputs=[db_name_upload, db_name_list]
).then(
fn=list_files_callback,
inputs=[db_name_list],
outputs=list_output
)
# Ritorna i dropdown (e altri componenti, se servono) per poterli aggiornare
return [db_name_upload, db_name_list, upload_button, list_button, delete_file_button]
|