diff --git a/requirements.txt b/requirements.txt index 3b9ca44..1972ac0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -60,4 +60,3 @@ werkzeug==3.1.2 # flask # flask-cors -opengeodeweb-microservice==1.*,>=1.0.4 diff --git a/src/opengeodeweb_back/utils_functions.py b/src/opengeodeweb_back/utils_functions.py index f60a104..2074026 100644 --- a/src/opengeodeweb_back/utils_functions.py +++ b/src/opengeodeweb_back/utils_functions.py @@ -4,7 +4,6 @@ import time import zipfile from collections.abc import Callable -from typing import Any from concurrent.futures import ThreadPoolExecutor # Third party imports @@ -112,7 +111,7 @@ def validate_request(request: flask.Request, schema: dict[str, str]) -> None: def set_interval( - function: Callable[[Any], None], seconds: float, args: Any + function: Callable[[flask.Flask], None], seconds: float, args: flask.Flask ) -> threading.Timer: def function_wrapper() -> None: set_interval(function, seconds, args) @@ -129,7 +128,7 @@ def extension_from_filename(filename: str) -> str: def send_file( - upload_folder: str, saved_files: str, new_file_name: str + upload_folder: str, saved_files: list[str], new_file_name: str ) -> flask.Response: if len(saved_files) == 1: mimetype = "application/octet-binary" @@ -177,19 +176,10 @@ def create_data_folder_from_id(data_id: str) -> str: def save_all_viewables_and_return_info( geode_object: str, - data: Any, - input_file: str | None = None, - additional_files: list[str] | None = None, -) -> dict[str, Any]: - if additional_files is None: - additional_files = [] - - data_entry = Data.create( - geode_object=geode_object, - input_file=input_file, - additional_files=additional_files, - ) - data_path = create_data_folder_from_id(data_entry.id) + data: object, + data_entry: Data, + data_path: str, +) -> dict[str, str | list[str]]: with ThreadPoolExecutor() as executor: native_future = executor.submit( geode_functions.save, @@ -230,22 +220,27 @@ def save_all_viewables_and_return_info( def generate_native_viewable_and_light_viewable_from_object( - geode_object: str, data: Any -) -> dict[str, Any]: - return save_all_viewables_and_return_info(geode_object, data, input_file="") + geode_object: str, data: object +) -> dict[str, str | list[str]]: + data_entry = Data.create( + geode_object=geode_object, + input_file="", + additional_files=[], + ) + data_path = create_data_folder_from_id(data_entry.id) + return save_all_viewables_and_return_info(geode_object, data, data_entry, data_path) def generate_native_viewable_and_light_viewable_from_file( geode_object: str, input_filename: str -) -> dict[str, Any]: - - temp_data_entry = Data.create( +) -> dict[str, str | list[str]]: + data_entry = Data.create( geode_object=geode_object, input_file=input_filename, additional_files=[], ) - data_path = create_data_folder_from_id(temp_data_entry.id) + data_path = create_data_folder_from_id(data_entry.id) full_input_filename = geode_functions.upload_file_path(input_filename) copied_full_path = os.path.join( @@ -270,9 +265,10 @@ def generate_native_viewable_and_light_viewable_from_file( data = geode_functions.load(geode_object, copied_full_path) + data_entry.additional_files = additional_files_copied return save_all_viewables_and_return_info( geode_object, data, - input_file=input_filename, - additional_files=additional_files_copied, + data_entry, + data_path, ) diff --git a/tests/test_utils_functions.py b/tests/test_utils_functions.py index 7f7e978..3d7b3dd 100644 --- a/tests/test_utils_functions.py +++ b/tests/test_utils_functions.py @@ -103,8 +103,15 @@ def test_save_all_viewables_and_return_info(client): input_file = "test.og_brep" additional_files = ["additional_file.txt"] + data_entry = Data.create( + geode_object=geode_object, + input_file=input_file, + additional_files=additional_files, + ) + data_path = utils_functions.create_data_folder_from_id(data_entry.id) + result = utils_functions.save_all_viewables_and_return_info( - geode_object, data, input_file, additional_files + geode_object, data, data_entry, data_path ) assert isinstance(result, dict) @@ -136,8 +143,16 @@ def test_save_all_viewables_commits_to_db(client): geode_object = "BRep" data = geode_functions.load(geode_object, "./tests/data/test.og_brep") input_file = "test.og_brep" + + data_entry = Data.create( + geode_object=geode_object, + input_file=input_file, + additional_files=[], + ) + data_path = utils_functions.create_data_folder_from_id(data_entry.id) + result = utils_functions.save_all_viewables_and_return_info( - geode_object, data, input_file + geode_object, data, data_entry, data_path ) data_id = result["id"] db_entry_before = Data.get(data_id)