From 45c9ef369ee83a8f3cfb1c2ef742243d487228a6 Mon Sep 17 00:00:00 2001 From: MaxNumerique Date: Wed, 15 Oct 2025 15:19:51 +0200 Subject: [PATCH 1/4] refactor(utils_functions): simplify save_all_viewables_and_return_info parameters --- src/opengeodeweb_back/utils_functions.py | 39 +++++++++--------------- 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/src/opengeodeweb_back/utils_functions.py b/src/opengeodeweb_back/utils_functions.py index c569519..1d6b2fc 100644 --- a/src/opengeodeweb_back/utils_functions.py +++ b/src/opengeodeweb_back/utils_functions.py @@ -163,18 +163,9 @@ 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, + data_entry: Any, + data_path: str, ) -> 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) with ThreadPoolExecutor() as executor: native_future = executor.submit( geode_functions.save, @@ -221,21 +212,25 @@ 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="") + 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]: - - session = get_session() - temp_data_entry = Data.create( + 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( @@ -260,14 +255,10 @@ def generate_native_viewable_and_light_viewable_from_file( data = geode_functions.load(geode_object, copied_full_path) - if session: - session.delete(temp_data_entry) - session.flush() - session.commit() - + 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, ) From cf6b9d999c00037f2018c49bf80254053e3b8900 Mon Sep 17 00:00:00 2001 From: MaxNumerique Date: Wed, 15 Oct 2025 15:22:24 +0200 Subject: [PATCH 2/4] tests --- tests/test_utils_functions.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/test_utils_functions.py b/tests/test_utils_functions.py index 4aae540..a752cf1 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) From 669e359dd1008fb1e9acbfe10da314d0815b189a Mon Sep 17 00:00:00 2001 From: MaxNumerique <144453705+MaxNumerique@users.noreply.github.com> Date: Wed, 15 Oct 2025 15:24:18 +0000 Subject: [PATCH 3/4] Apply prepare changes --- requirements.txt | 1 - src/opengeodeweb_back/utils_functions.py | 2 +- tests/test_utils_functions.py | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) 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 9d66a0c..4905d04 100644 --- a/src/opengeodeweb_back/utils_functions.py +++ b/src/opengeodeweb_back/utils_functions.py @@ -240,7 +240,7 @@ def generate_native_viewable_and_light_viewable_from_file( input_file=input_filename, additional_files=[], ) - + data_path = create_data_folder_from_id(data_entry.id) full_input_filename = geode_functions.upload_file_path(input_filename) diff --git a/tests/test_utils_functions.py b/tests/test_utils_functions.py index 95914d8..3d7b3dd 100644 --- a/tests/test_utils_functions.py +++ b/tests/test_utils_functions.py @@ -143,14 +143,14 @@ 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, data_entry, data_path ) From a726d4591e27c75254b43527e2b5ed8f4aa6cd3a Mon Sep 17 00:00:00 2001 From: MaxNumerique Date: Thu, 16 Oct 2025 09:14:59 +0200 Subject: [PATCH 4/4] remove Any type --- src/opengeodeweb_back/utils_functions.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/opengeodeweb_back/utils_functions.py b/src/opengeodeweb_back/utils_functions.py index 4905d04..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,10 +176,10 @@ def create_data_folder_from_id(data_id: str) -> str: def save_all_viewables_and_return_info( geode_object: str, - data: Any, - data_entry: Any, + data: object, + data_entry: Data, data_path: str, -) -> dict[str, Any]: +) -> dict[str, str | list[str]]: with ThreadPoolExecutor() as executor: native_future = executor.submit( geode_functions.save, @@ -221,8 +220,8 @@ def save_all_viewables_and_return_info( def generate_native_viewable_and_light_viewable_from_object( - geode_object: str, data: Any -) -> dict[str, Any]: + geode_object: str, data: object +) -> dict[str, str | list[str]]: data_entry = Data.create( geode_object=geode_object, input_file="", @@ -234,7 +233,7 @@ def generate_native_viewable_and_light_viewable_from_object( def generate_native_viewable_and_light_viewable_from_file( geode_object: str, input_filename: str -) -> dict[str, Any]: +) -> dict[str, str | list[str]]: data_entry = Data.create( geode_object=geode_object, input_file=input_filename,