From 3ddf8123dce22380ffa1cf774512152141a94e6f Mon Sep 17 00:00:00 2001 From: lvalics Date: Sun, 22 Oct 2023 12:48:45 +0000 Subject: [PATCH] The listing will check if the file(s) exist(s) and show the download link only if exist. Also disabled for the moment to delete the PDF file after sent to vector database. --- .../api/data_sources/pdf_handler.py | 6 +++-- .../web/services/handle_pdf_datasource.py | 8 ++++++ .../web/templates/settings-data.html | 6 ++--- .../web/views/views_chatbot_settings.py | 27 +++++++++++-------- 4 files changed, 31 insertions(+), 16 deletions(-) diff --git a/dj_backend_server/api/data_sources/pdf_handler.py b/dj_backend_server/api/data_sources/pdf_handler.py index 5a116224..6999113a 100644 --- a/dj_backend_server/api/data_sources/pdf_handler.py +++ b/dj_backend_server/api/data_sources/pdf_handler.py @@ -25,8 +25,10 @@ def pdf_handler(shared_folder: str, namespace: str): init_vector_store(docs, embeddings, StoreOptions(namespace)) - delete_folder(folder_path=directory_path) - print('All is done, folder deleted') + #TODO: add to settings to delete or not the folder after is successfully sent to QDRANT + #TODO: Also need in template to check, if folder exist and file exist, show download button, else empty. + #delete_folder(folder_path=directory_path) + #print('All is done, folder deleted') except Exception as e: import traceback diff --git a/dj_backend_server/web/services/handle_pdf_datasource.py b/dj_backend_server/web/services/handle_pdf_datasource.py index 96ee27da..ba948636 100644 --- a/dj_backend_server/web/services/handle_pdf_datasource.py +++ b/dj_backend_server/web/services/handle_pdf_datasource.py @@ -35,6 +35,14 @@ def handle(self) -> PdfDataSource: # Generate hash of the file content file_hash = hashlib.md5(file.read()).hexdigest() file.seek(0) # Reset file pointer to beginning + + # Create the directory if it does not exist + directory = os.path.dirname(file_path) + os.makedirs(directory, exist_ok=True) + + # Check if the directory was created successfully + if not os.path.isdir(directory): + raise Exception(f"Failed to create directory: {directory}") # Save the file to the storage system default_storage.save(file_path, file) diff --git a/dj_backend_server/web/templates/settings-data.html b/dj_backend_server/web/templates/settings-data.html index 137365b0..4feb84e5 100644 --- a/dj_backend_server/web/templates/settings-data.html +++ b/dj_backend_server/web/templates/settings-data.html @@ -432,9 +432,9 @@

Data sources

- - download - + + {{ file.message|safe }} +
diff --git a/dj_backend_server/web/views/views_chatbot_settings.py b/dj_backend_server/web/views/views_chatbot_settings.py index 0a2a3b62..2d82f0a1 100644 --- a/dj_backend_server/web/views/views_chatbot_settings.py +++ b/dj_backend_server/web/views/views_chatbot_settings.py @@ -83,20 +83,25 @@ def data_settings(request, id): # print(source.get_files()) for file_info, file_url in zip(source.get_files_info(), source.get_files()): - # print("Debug: Current file_info") - # print(file_info) - # print("Debug: Current file_url") - # print(file_url) - full_file_url = os.environ.get('APP_URL') + '/' + file_url - merged_file = { - 'name': file_info.get('original_name', ''), - 'url': full_file_url - } + # Checking if the file was deleted. If so, we will show a message instead of the file URL + if os.path.exists(file_url): + full_file_url = os.environ.get('APP_URL') + '/' + file_url + merged_file = { + 'name': file_info.get('original_name', ''), + 'url': full_file_url, + 'message': 'download' + } + else: + merged_file = { + 'name': file_info.get('original_name', ''), + 'url': 'javascript:void(0)', + 'message': 'remove_selection' + } merged_files.append(merged_file) - print("Debug: Merged files") - print(merged_files) + #print("Debug: Merged files") + #print(merged_files) source.merged_files = merged_files