diff --git a/src/opengeodeweb_back/data.py b/src/opengeodeweb_back/data.py index ce3b6a13..76889e03 100644 --- a/src/opengeodeweb_back/data.py +++ b/src/opengeodeweb_back/data.py @@ -10,7 +10,6 @@ class Data(Base): id: Mapped[str] = mapped_column( String, primary_key=True, default=lambda: str(uuid.uuid4()).replace("-", "") ) - name: Mapped[str] = mapped_column(String, nullable=False) native_file_name: Mapped[str] = mapped_column(String, nullable=False) viewable_file_name: Mapped[str] = mapped_column(String, nullable=False) geode_object: Mapped[str] = mapped_column(String, nullable=False) @@ -21,7 +20,6 @@ class Data(Base): @staticmethod def create( - name: str, geode_object: str, input_file: str | None = None, additional_files: list[str] | None = None, @@ -30,7 +28,6 @@ def create( additional_files = additional_files if additional_files is not None else [] data_entry = Data( - name=name, geode_object=geode_object, input_file=input_file, additional_files=additional_files, @@ -42,3 +39,7 @@ def create( database.session.add(data_entry) database.session.flush() return data_entry + + @staticmethod + def get(data_id: str) -> "Data | None": + return database.session.get(Data, data_id) diff --git a/src/opengeodeweb_back/geode_functions.py b/src/opengeodeweb_back/geode_functions.py index 2019a162..a85373f4 100644 --- a/src/opengeodeweb_back/geode_functions.py +++ b/src/opengeodeweb_back/geode_functions.py @@ -6,10 +6,13 @@ import opengeode as og # type: ignore import werkzeug import flask +from typing import Any # Local application imports from .geode_objects import geode_objects_dict from . import utils_functions +from .data import Data +from .database import database def geode_object_value(geode_object: str): @@ -45,21 +48,32 @@ def load(geode_object: str, file_absolute_path: str): return geode_object_value(geode_object)["load"](file_absolute_path) -def data_file_path(data_id: str, filename: str) -> str: +def data_file_path(data_id: str, filename: str = "") -> str: data_folder_path = flask.current_app.config["DATA_FOLDER_PATH"] - return os.path.join( - data_folder_path, - data_id, - werkzeug.utils.secure_filename(filename), - ) + if filename: + return os.path.join(data_folder_path, data_id, filename) + return os.path.join(data_folder_path, data_id) + + +def load_data(data_id: str) -> Any: + data_entry = Data.get(data_id) + if not data_entry: + flask.abort(404, f"Data with id {data_id} not found") + + file_absolute_path = data_file_path(data_id, data_entry.native_file_name) + return load(data_entry.geode_object, file_absolute_path) + +def get_data_info(data_id: str) -> Data: + from .data import Data -def load_data(geode_object: str, data_id: str, filename: str): - file_absolute_path = data_file_path(data_id, filename) - return load(geode_object, file_absolute_path) + data_entry = Data.get(data_id) + if not data_entry: + flask.abort(404, f"Data with id {data_id} not found") + return data_entry -def upload_file_path(filename): +def upload_file_path(filename: str) -> str: upload_folder = flask.current_app.config["UPLOAD_FOLDER"] secure_filename = werkzeug.utils.secure_filename(filename) return os.path.abspath(os.path.join(upload_folder, secure_filename)) diff --git a/src/opengeodeweb_back/routes/blueprint_routes.py b/src/opengeodeweb_back/routes/blueprint_routes.py index 1e0539cb..7f965009 100644 --- a/src/opengeodeweb_back/routes/blueprint_routes.py +++ b/src/opengeodeweb_back/routes/blueprint_routes.py @@ -53,7 +53,7 @@ def teardown_request(exception): def allowed_files(): utils_functions.validate_request(flask.request, allowed_files_json) extensions = geode_functions.list_input_extensions( - flask.request.json["supported_feature"] + flask.request.get_json()["supported_feature"] ) return flask.make_response({"extensions": extensions}, 200) @@ -99,10 +99,10 @@ def allowed_objects(): utils_functions.validate_request(flask.request, allowed_objects_json) file_absolute_path = geode_functions.upload_file_path( - flask.request.json["filename"] + flask.request.get_json()["filename"] ) allowed_objects = geode_functions.list_geode_objects( - file_absolute_path, flask.request.json["supported_feature"] + file_absolute_path, flask.request.get_json()["supported_feature"] ) return flask.make_response({"allowed_objects": allowed_objects}, 200) @@ -120,10 +120,10 @@ def allowed_objects(): ) def missing_files(): utils_functions.validate_request(flask.request, missing_files_json) - file_path = geode_functions.upload_file_path(flask.request.json["filename"]) + file_path = geode_functions.upload_file_path(flask.request.get_json()["filename"]) additional_files = geode_functions.additional_files( - flask.request.json["input_geode_object"], + flask.request.get_json()["input_geode_object"], file_path, ) @@ -167,7 +167,7 @@ def missing_files(): def crs_converter_geographic_coordinate_systems(): utils_functions.validate_request(flask.request, geographic_coordinate_systems_json) infos = geode_functions.geographic_coordinate_systems( - flask.request.json["input_geode_object"] + flask.request.get_json()["input_geode_object"] ) crs_list = [] for info in infos: @@ -194,10 +194,12 @@ def crs_converter_geographic_coordinate_systems(): def inspect_file(): utils_functions.validate_request(flask.request, inspect_file_json) - file_path = geode_functions.upload_file_path(flask.request.json["filename"]) - data = geode_functions.load(flask.request.json["input_geode_object"], file_path) + file_path = geode_functions.upload_file_path(flask.request.get_json()["filename"]) + data = geode_functions.load( + flask.request.get_json()["input_geode_object"], file_path + ) class_inspector = geode_functions.inspect( - flask.request.json["input_geode_object"], data + flask.request.get_json()["input_geode_object"], data ) inspection_result = geode_functions.get_inspector_children(class_inspector) return flask.make_response({"inspection_result": inspection_result}, 200) @@ -218,14 +220,14 @@ def geode_objects_and_output_extensions(): utils_functions.validate_request( flask.request, geode_objects_and_output_extensions_json ) - file_path = geode_functions.upload_file_path(flask.request.json["filename"]) + file_path = geode_functions.upload_file_path(flask.request.get_json()["filename"]) data = geode_functions.load( - flask.request.json["input_geode_object"], + flask.request.get_json()["input_geode_object"], file_path, ) geode_objects_and_output_extensions = ( geode_functions.geode_objects_output_extensions( - flask.request.json["input_geode_object"], data + flask.request.get_json()["input_geode_object"], data ) ) return flask.make_response( @@ -249,8 +251,8 @@ def save_viewable_file(): utils_functions.validate_request(flask.request, save_viewable_file_json) return flask.make_response( utils_functions.generate_native_viewable_and_light_viewable_from_file( - geode_object=flask.request.json["input_geode_object"], - input_filename=flask.request.json["filename"], + geode_object=flask.request.get_json()["input_geode_object"], + input_filename=flask.request.get_json()["filename"], ), 200, ) @@ -263,10 +265,10 @@ def save_viewable_file(): @routes.route(create_point_json["route"], methods=create_point_json["methods"]) def create_point(): utils_functions.validate_request(flask.request, create_point_json) - title = flask.request.json["title"] - x = flask.request.json["x"] - y = flask.request.json["y"] - z = flask.request.json["z"] + title = flask.request.get_json()["title"] + x = flask.request.get_json()["x"] + y = flask.request.get_json()["y"] + z = flask.request.get_json()["z"] class_ = geode_functions.geode_object_class("PointSet3D") PointSet3D = class_.create() builder = geode_functions.create_builder("PointSet3D", PointSet3D) @@ -290,14 +292,8 @@ def create_point(): ) def texture_coordinates(): utils_functions.validate_request(flask.request, texture_coordinates_json) - data = geode_functions.load_data( - flask.request.json["input_geode_object"], - flask.request.json["id"], - flask.request.json["filename"], - ) - + data = geode_functions.load_data(flask.request.get_json().get("id")) texture_coordinates = data.texture_manager().texture_names() - return flask.make_response({"texture_coordinates": texture_coordinates}, 200) @@ -314,14 +310,8 @@ def texture_coordinates(): ) def vertex_attribute_names(): utils_functions.validate_request(flask.request, vertex_attribute_names_json) - data = geode_functions.load_data( - flask.request.json["input_geode_object"], - flask.request.json["id"], - flask.request.json["filename"], - ) - + data = geode_functions.load_data(flask.request.get_json().get("id")) vertex_attribute_names = data.vertex_attribute_manager().attribute_names() - return flask.make_response( { "vertex_attribute_names": vertex_attribute_names, @@ -343,14 +333,8 @@ def vertex_attribute_names(): ) def polygon_attribute_names(): utils_functions.validate_request(flask.request, polygon_attribute_names_json) - data = geode_functions.load_data( - flask.request.json["input_geode_object"], - flask.request.json["id"], - flask.request.json["filename"], - ) - + data = geode_functions.load_data(flask.request.get_json().get("id")) polygon_attribute_names = data.polygon_attribute_manager().attribute_names() - return flask.make_response( { "polygon_attribute_names": polygon_attribute_names, @@ -372,14 +356,8 @@ def polygon_attribute_names(): ) def polyhedron_attribute_names(): utils_functions.validate_request(flask.request, polyhedron_attribute_names_json) - data = geode_functions.load_data( - flask.request.json["input_geode_object"], - flask.request.json["id"], - flask.request.json["filename"], - ) - + data = geode_functions.load_data(flask.request.get_json().get("id")) polyhedron_attribute_names = data.polyhedron_attribute_manager().attribute_names() - return flask.make_response( { "polyhedron_attribute_names": polyhedron_attribute_names, diff --git a/src/opengeodeweb_back/routes/models/blueprint_models.py b/src/opengeodeweb_back/routes/models/blueprint_models.py index 3a812224..02209f2e 100644 --- a/src/opengeodeweb_back/routes/models/blueprint_models.py +++ b/src/opengeodeweb_back/routes/models/blueprint_models.py @@ -20,7 +20,7 @@ def uuid_to_flat_index(): utils_functions.validate_request(flask.request, vtm_component_indices_json) vtm_file_path = geode_functions.data_file_path( - flask.request.json["id"], "viewable.vtm" + flask.request.get_json().get("id"), "viewable.vtm" ) tree = ET.parse(vtm_file_path) root = tree.find("vtkMultiBlockDataSet") @@ -49,12 +49,6 @@ def extract_model_uuids(model): @routes.route(mesh_components_json["route"], methods=mesh_components_json["methods"]) def extract_uuids_endpoint(): utils_functions.validate_request(flask.request, mesh_components_json) - - model = geode_functions.load_data( - flask.request.json["geode_object"], - flask.request.json["id"], - flask.request.json["filename"], - ) - + model = geode_functions.load_data(flask.request.get_json().get("id")) uuid_dict = extract_model_uuids(model) return flask.make_response({"uuid_dict": uuid_dict}, 200) diff --git a/src/opengeodeweb_back/routes/models/schemas/mesh_components.json b/src/opengeodeweb_back/routes/models/schemas/mesh_components.json index a2e4459b..d8f315aa 100644 --- a/src/opengeodeweb_back/routes/models/schemas/mesh_components.json +++ b/src/opengeodeweb_back/routes/models/schemas/mesh_components.json @@ -8,20 +8,10 @@ "id": { "type": "string", "minLength": 1 - }, - "filename": { - "type": "string", - "minLength": 1 - }, - "geode_object": { - "type": "string", - "minLength": 1 } }, "required": [ - "id", - "filename", - "geode_object" + "id" ], "additionalProperties": false } \ No newline at end of file diff --git a/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json b/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json index 200e722c..f7c66590 100644 --- a/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +++ b/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json @@ -5,22 +5,12 @@ ], "type": "object", "properties": { - "input_geode_object": { - "type": "string", - "minLength": 1 - }, - "filename": { - "type": "string", - "minLength": 1 - }, "id": { "type": "string", "minLength": 1 } }, "required": [ - "input_geode_object", - "filename", "id" ], "additionalProperties": false diff --git a/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json b/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json index 9eb74209..49477b1e 100644 --- a/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +++ b/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json @@ -5,22 +5,12 @@ ], "type": "object", "properties": { - "input_geode_object": { - "type": "string", - "minLength": 1 - }, - "filename": { - "type": "string", - "minLength": 1 - }, "id": { "type": "string", "minLength": 1 } }, "required": [ - "input_geode_object", - "filename", "id" ], "additionalProperties": false diff --git a/src/opengeodeweb_back/routes/schemas/texture_coordinates.json b/src/opengeodeweb_back/routes/schemas/texture_coordinates.json index 2c16e461..47a13554 100644 --- a/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +++ b/src/opengeodeweb_back/routes/schemas/texture_coordinates.json @@ -5,23 +5,13 @@ ], "type": "object", "properties": { - "input_geode_object": { - "type": "string", - "minLength": 1 - }, - "filename": { - "type": "string", - "minLength": 1 - }, "id": { "type": "string", "minLength": 1 } }, "required": [ - "input_geode_object", - "id", - "filename" + "id" ], "additionalProperties": false } \ No newline at end of file diff --git a/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json b/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json index b25abdb3..4f000dd0 100644 --- a/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +++ b/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json @@ -5,22 +5,12 @@ ], "type": "object", "properties": { - "input_geode_object": { - "type": "string", - "minLength": 1 - }, - "filename": { - "type": "string", - "minLength": 1 - }, "id": { "type": "string", "minLength": 1 } }, "required": [ - "input_geode_object", - "filename", "id" ], "additionalProperties": false diff --git a/src/opengeodeweb_back/utils_functions.py b/src/opengeodeweb_back/utils_functions.py index 1fcd84aa..d27b1246 100644 --- a/src/opengeodeweb_back/utils_functions.py +++ b/src/opengeodeweb_back/utils_functions.py @@ -170,7 +170,6 @@ def save_all_viewables_and_return_info( additional_files = [] data_entry = Data.create( - name=data.name(), geode_object=geode_object, input_file=input_file, additional_files=additional_files, @@ -197,7 +196,6 @@ def save_all_viewables_and_return_info( database.session.commit() return { - "name": data_entry.name, "native_file_name": data_entry.native_file_name, "viewable_file_name": data_entry.viewable_file_name, "id": data_entry.id, @@ -219,7 +217,6 @@ def generate_native_viewable_and_light_viewable_from_file( geode_object: str, input_filename: str ) -> dict[str, Any]: temp_data_entry = Data.create( - name="temp", geode_object=geode_object, input_file=input_filename, additional_files=[], @@ -248,7 +245,7 @@ def generate_native_viewable_and_light_viewable_from_file( shutil.copy2(source_path, dest_path) additional_files_copied.append(additional_file.filename) - data = geode_functions.load_data(geode_object, temp_data_entry.id, input_filename) + data = geode_functions.load(geode_object, copied_full_path) database.session.delete(temp_data_entry) database.session.flush() diff --git a/tests/test_models_routes.py b/tests/test_models_routes.py index 98e0dd80..2bacdc27 100644 --- a/tests/test_models_routes.py +++ b/tests/test_models_routes.py @@ -3,6 +3,8 @@ import flask from src.opengeodeweb_back import geode_functions +from src.opengeodeweb_back.data import Data +from src.opengeodeweb_back.database import database def test_model_mesh_components(client, test_id): @@ -28,14 +30,18 @@ def test_model_mesh_components(client, test_id): def test_extract_brep_uuids(client, test_id): route = "/models/mesh_components" - brep_filename = "cube.og_brep" - json_data = {"id": test_id, "geode_object": "BRep", "filename": brep_filename} with client.application.app_context(): - data_path = geode_functions.data_file_path(json_data["id"], brep_filename) + data_entry = Data.create(geode_object="BRep", input_file=brep_filename) + data_entry.native_file_name = brep_filename + database.session.commit() + + data_path = geode_functions.data_file_path(data_entry.id, brep_filename) os.makedirs(os.path.dirname(data_path), exist_ok=True) shutil.copy(f"./tests/data/{brep_filename}", data_path) + + json_data = {"id": data_entry.id} response = client.post(route, json=json_data) assert response.status_code == 200 diff --git a/tests/test_routes.py b/tests/test_routes.py index 3b9d5cf6..9acc5d21 100644 --- a/tests/test_routes.py +++ b/tests/test_routes.py @@ -6,7 +6,9 @@ from werkzeug.datastructures import FileStorage # Local application imports -from src.opengeodeweb_back import geode_functions, geode_objects, test_utils +from src.opengeodeweb_back import geode_functions, test_utils +from src.opengeodeweb_back.data import Data +from src.opengeodeweb_back.database import database def test_allowed_files(client): @@ -151,13 +153,11 @@ def get_full_data(): # Normal test with filename 'corbi.og_brep' response = client.post(route, json=get_full_data()) assert response.status_code == 200 - name = response.json["name"] - assert type(name) is str native_file_name = response.json["native_file_name"] assert type(native_file_name) is str viewable_file_name = response.json["viewable_file_name"] assert type(viewable_file_name) is str - id = response.json["id"] + id = response.json.get("id") assert type(id) is str object_type = response.json["object_type"] assert type(object_type) is str @@ -171,17 +171,18 @@ def get_full_data(): def test_texture_coordinates(client, test_id): with client.application.app_context(): - data_path = geode_functions.data_file_path(test_id, "hat.vtp") + data = Data.create(geode_object="PolygonalSurface3D", input_file="hat.vtp") + data.native_file_name = "hat.vtp" + database.session.commit() + + data_path = geode_functions.data_file_path(data.id, "hat.vtp") + print(data_path) os.makedirs(os.path.dirname(data_path), exist_ok=True) shutil.copy("./tests/data/hat.vtp", data_path) response = client.post( "/texture_coordinates", - json={ - "input_geode_object": "PolygonalSurface3D", - "id": test_id, - "filename": "hat.vtp", - }, + json={"id": data.id}, ) assert response.status_code == 200 texture_coordinates = response.json["texture_coordinates"] @@ -192,119 +193,63 @@ def test_texture_coordinates(client, test_id): def test_vertex_attribute_names(client, test_id): route = f"/vertex_attribute_names" - for geode_object, value in geode_objects.geode_objects_dict().items(): - if value["object_type"] == "mesh": - input_extensions = geode_functions.geode_object_input_extensions( - geode_object - ) - if "elements" in value: - elements = geode_functions.get_elements(geode_object) - if "points" in elements: - for input_extension in input_extensions: - if ( - geode_functions.is_loadable( - geode_object, - os.path.join("./data", f"test.{input_extension}"), - ) - > 0.0 - ): - - def get_full_data(): - return { - "input_geode_object": geode_object, - "id": test_id, - "filename": f"test.{input_extension}", - } - - response = client.post(route, json=get_full_data()) - assert response.status_code == 200 - vertex_attribute_names = response.json[ - "vertex_attribute_names" - ] - assert type(vertex_attribute_names) is list - for vertex_attribute_name in vertex_attribute_names: - assert type(vertex_attribute_name) is str - # Test all params - test_utils.test_route_wrong_params(client, route, get_full_data) + with client.application.app_context(): + data = Data.create(geode_object="PolygonalSurface3D", input_file="test.vtp") + data.native_file_name = "test.vtp" + database.session.commit() + + data_path = geode_functions.data_file_path(data.id, "test.vtp") + os.makedirs(os.path.dirname(data_path), exist_ok=True) + if os.path.exists("./tests/data/hat.vtp"): + shutil.copy("./tests/data/hat.vtp", data_path) + + response = client.post(route, json={"id": data.id}) + assert response.status_code == 200 + vertex_attribute_names = response.json["vertex_attribute_names"] + assert type(vertex_attribute_names) is list + for vertex_attribute_name in vertex_attribute_names: + assert type(vertex_attribute_name) is str def test_polygon_attribute_names(client, test_id): route = f"/polygon_attribute_names" - for geode_object, value in geode_objects.geode_objects_dict().items(): - if value["object_type"] == "mesh": - input_extensions = geode_functions.geode_object_input_extensions( - geode_object - ) - if "elements" in value: - elements = geode_functions.get_elements(geode_object) - if "polygons" in elements: - for input_extension in input_extensions: - if ( - geode_functions.is_loadable( - geode_object, - os.path.join("./data", f"test.{input_extension}"), - ) - > 0.0 - ): - - def get_full_data(): - return { - "input_geode_object": geode_object, - "id": test_id, - "filename": f"test.{input_extension}", - } - - response = client.post(route, json=get_full_data()) - assert response.status_code == 200 - polygon_attribute_names = response.json[ - "polygon_attribute_names" - ] - assert type(polygon_attribute_names) is list - for polygon_attribute_name in polygon_attribute_names: - assert type(polygon_attribute_name) is str - # Test all params - test_utils.test_route_wrong_params(client, route, get_full_data) + with client.application.app_context(): + data = Data.create(geode_object="PolygonalSurface3D", input_file="test.vtp") + data.native_file_name = "test.vtp" + database.session.commit() + + data_path = geode_functions.data_file_path(data.id, "test.vtp") + os.makedirs(os.path.dirname(data_path), exist_ok=True) + shutil.copy("./tests/data/test.vtp", data_path) + + response = client.post(route, json={"id": data.id}) + assert response.status_code == 200 + polygon_attribute_names = response.json["polygon_attribute_names"] + assert type(polygon_attribute_names) is list + for polygon_attribute_name in polygon_attribute_names: + assert type(polygon_attribute_name) is str def test_polyhedron_attribute_names(client, test_id): route = f"/polyhedron_attribute_names" - for geode_object, value in geode_objects.geode_objects_dict().items(): - if value["object_type"] == "mesh": - input_extensions = geode_functions.geode_object_input_extensions( - geode_object - ) - if "elements" in value: - elements = geode_functions.get_elements(geode_object) - if "polyhedrons" in elements: - for input_extension in input_extensions: - if ( - geode_functions.is_loadable( - geode_object, - os.path.join("./data", f"test.{input_extension}"), - ) - > 0.0 - ): - - def get_full_data(): - return { - "input_geode_object": geode_object, - "id": test_id, - "filename": f"test.{input_extension}", - } - - response = client.post(route, json=get_full_data()) - assert response.status_code == 200 - polyhedron_attribute_names = response.json[ - "polyhedron_attribute_names" - ] - assert type(polyhedron_attribute_names) is list - for polyhedron_attribute_name in polyhedron_attribute_names: - assert type(polyhedron_attribute_name) is str - # Test all params - test_utils.test_route_wrong_params(client, route, get_full_data) + with client.application.app_context(): + data = Data.create(geode_object="PolyhedralSolid3D", input_file="test.vtu") + data.native_file_name = "test.vtu" + database.session.commit() + + data_path = geode_functions.data_file_path(data.id, "test.vtu") + os.makedirs(os.path.dirname(data_path), exist_ok=True) + shutil.copy("./tests/data/test.vtu", data_path) + + response = client.post(route, json={"id": data.id}) + assert response.status_code == 200 + polyhedron_attribute_names = response.json["polyhedron_attribute_names"] + assert type(polyhedron_attribute_names) is list + for polyhedron_attribute_name in polyhedron_attribute_names: + assert type(polyhedron_attribute_name) is str def test_create_point(client): @@ -316,7 +261,7 @@ def test_create_point(client): assert response.status_code == 200 viewable_file_name = response.json["viewable_file_name"] assert type(viewable_file_name) is str - id = response.json["id"] + id = response.json.get("id") assert type(id) is str # Test all params diff --git a/tests/test_utils_functions.py b/tests/test_utils_functions.py index cea87147..8f748bba 100644 --- a/tests/test_utils_functions.py +++ b/tests/test_utils_functions.py @@ -108,7 +108,6 @@ def test_save_all_viewables_and_return_info(client): ) assert isinstance(result, dict) - assert result["name"] == data.name() assert result["native_file_name"].startswith("native.") assert result["viewable_file_name"].endswith(".vtm") assert isinstance(result["id"], str) @@ -119,9 +118,8 @@ def test_save_all_viewables_and_return_info(client): assert result["geode_object"] == geode_object assert result["input_files"] == input_file - db_entry = database.session.get(Data, result["id"]) + db_entry = Data.get(result["id"]) assert db_entry is not None - assert db_entry.name == data.name() assert db_entry.native_file_name == result["native_file_name"] assert db_entry.viewable_file_name == result["viewable_file_name"] assert db_entry.geode_object == geode_object @@ -132,7 +130,7 @@ def test_save_all_viewables_and_return_info(client): assert os.path.exists(expected_data_path) -def test_save_all_viewables_commits_to_db_properly(client): +def test_save_all_viewables_commits_to_db(client): app = client.application with app.app_context(): geode_object = "BRep" @@ -142,11 +140,11 @@ def test_save_all_viewables_commits_to_db_properly(client): geode_object, data, input_file ) data_id = result["id"] - db_entry_before = database.session.get(Data, data_id) + db_entry_before = Data.get(data_id) assert db_entry_before is not None assert db_entry_before.native_file_name == result["native_file_name"] database.session.rollback() - db_entry_after = database.session.get(Data, data_id) + db_entry_after = Data.get(data_id) assert ( db_entry_after is not None ), "database.session.commit() was not called - entry missing after rollback" @@ -166,7 +164,6 @@ def test_generate_native_viewable_and_light_viewable_from_object(client): ) assert isinstance(result, dict) - assert isinstance(result["name"], str) assert isinstance(result["native_file_name"], str) assert result["native_file_name"].startswith("native.") assert isinstance(result["viewable_file_name"], str) @@ -189,7 +186,6 @@ def test_generate_native_viewable_and_light_viewable_from_file(client): ) assert isinstance(result, dict) - assert isinstance(result["name"], str) assert isinstance(result["native_file_name"], str) assert result["native_file_name"].startswith("native.") assert isinstance(result["viewable_file_name"], str)