OpenGeodeWeb-Back 5.8.4rc2__tar.gz → 5.8.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. {opengeodeweb_back-5.8.4rc2/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-5.8.5}/PKG-INFO +1 -1
  2. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/pyproject.toml +1 -1
  3. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +1 -1
  4. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/blueprint_routes.py +6 -5
  5. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/models/blueprint_models.py +0 -8
  6. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/utils_functions.py +9 -21
  7. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/tests/test_utils_functions.py +25 -1
  8. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/LICENSE +0 -0
  9. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/README.md +0 -0
  10. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/requirements.txt +0 -0
  11. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/setup.cfg +0 -0
  12. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +0 -0
  13. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  14. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -0
  15. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  16. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/__init__.py +0 -0
  17. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/app_config.py +0 -0
  18. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/geode_functions.py +0 -0
  19. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/geode_objects.py +0 -0
  20. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/models/schemas/mesh_components.json +0 -0
  21. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/models/schemas/vtm_component_indices.json +0 -0
  22. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  23. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  24. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/create_point.json +0 -0
  25. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  26. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  27. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
  28. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  29. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  30. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  31. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  32. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  33. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  34. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  35. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  36. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/src/opengeodeweb_back/test_utils.py +0 -0
  37. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/tests/test_geode_functions.py +0 -0
  38. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/tests/test_models_routes.py +0 -0
  39. {opengeodeweb_back-5.8.4rc2 → opengeodeweb_back-5.8.5}/tests/test_routes.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 5.8.4rc2
3
+ Version: 5.8.5
4
4
  Summary: OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem
5
5
  Author-email: Geode-solutions <team-web@geode-solutions.com>
6
6
  Project-URL: Homepage, https://github.com/Geode-solutions/OpenGeodeWeb-Back
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "OpenGeodeWeb-Back"
8
- version = "5.8.4-rc.2"
8
+ version = "5.8.5"
9
9
  dynamic = ["dependencies"]
10
10
  authors = [
11
11
  { name="Geode-solutions", email="team-web@geode-solutions.com" },
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 5.8.4rc2
3
+ Version: 5.8.5
4
4
  Summary: OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem
5
5
  Author-email: Geode-solutions <team-web@geode-solutions.com>
6
6
  Project-URL: Homepage, https://github.com/Geode-solutions/OpenGeodeWeb-Back
@@ -6,7 +6,6 @@ import time
6
6
  # Third party imports
7
7
  import flask
8
8
  import opengeode
9
- import uuid
10
9
  import werkzeug
11
10
 
12
11
  # Local application imports
@@ -247,10 +246,12 @@ def save_viewable_file():
247
246
  secure_filename = werkzeug.utils.secure_filename(flask.request.json["filename"])
248
247
  file_path = os.path.abspath(os.path.join(UPLOAD_FOLDER, secure_filename))
249
248
  data = geode_functions.load(flask.request.json["input_geode_object"], file_path)
250
- response_data = utils_functions.create_response_with_binary_light_viewable(
251
- flask.request.json["input_geode_object"], data, DATA_FOLDER_PATH
249
+ return flask.make_response(
250
+ utils_functions.generate_native_viewable_and_light_viewable(
251
+ flask.request.json["input_geode_object"], data, DATA_FOLDER_PATH
252
+ ),
253
+ 200,
252
254
  )
253
- return flask.jsonify(response_data), 200
254
255
 
255
256
 
256
257
  with open(os.path.join(schemas, "create_point.json"), "r") as file:
@@ -271,7 +272,7 @@ def create_point():
271
272
  builder.create_point(opengeode.Point3D([x, y, z]))
272
273
  builder.set_name(title)
273
274
  return flask.make_response(
274
- utils_functions.create_response_with_binary_light_viewable(
275
+ utils_functions.generate_native_viewable_and_light_viewable(
275
276
  "PointSet3D", PointSet3D, DATA_FOLDER_PATH
276
277
  ),
277
278
  200,
@@ -17,13 +17,10 @@ with open(os.path.join(schemas, "vtm_component_indices.json"), "r") as file:
17
17
  vtm_component_indices_json["route"], methods=vtm_component_indices_json["methods"]
18
18
  )
19
19
  def uuid_to_flat_index():
20
-
21
- print(f"uuid_to_flat_index : {flask.request=}", flush=True)
22
20
  utils_functions.validate_request(flask.request, vtm_component_indices_json)
23
21
  vtm_file_path = os.path.join(
24
22
  flask.current_app.config["DATA_FOLDER_PATH"], flask.request.json["id"] + ".vtm"
25
23
  )
26
-
27
24
  tree = ET.parse(vtm_file_path)
28
25
  root = tree.find("vtkMultiBlockDataSet")
29
26
  uuid_to_flat_index = {}
@@ -60,16 +57,11 @@ with open(os.path.join(schemas, "mesh_components.json"), "r") as file:
60
57
 
61
58
  @routes.route(mesh_components_json["route"], methods=mesh_components_json["methods"])
62
59
  def extract_uuids_endpoint():
63
- print(f"extract_uuids_endpoint : {flask.request=}", flush=True)
64
-
65
60
  utils_functions.validate_request(flask.request, mesh_components_json)
66
-
67
61
  file_path = os.path.join(
68
62
  flask.current_app.config["DATA_FOLDER_PATH"], flask.request.json["filename"]
69
63
  )
70
-
71
64
  if not os.path.exists(file_path):
72
65
  return flask.make_response({"error": "File not found"}, 404)
73
-
74
66
  uuid_dict = extract_model_uuids(flask.request.json["geode_object"], file_path)
75
67
  return flask.make_response({"uuid_dict": uuid_dict}, 200)
@@ -143,8 +143,13 @@ def handle_exception(e):
143
143
  return response
144
144
 
145
145
 
146
- def save_native_viewable_binary_file_names(geode_object, data, folder_absolute_path):
146
+ def generate_native_viewable_and_light_viewable(
147
+ geode_object, data, folder_absolute_path
148
+ ):
147
149
  generated_id = str(uuid.uuid4()).replace("-", "")
150
+ name = data.name()
151
+ object_type = geode_functions.get_object_type(geode_object)
152
+
148
153
  saved_native_file_path = geode_functions.save(
149
154
  geode_object,
150
155
  data,
@@ -160,30 +165,13 @@ def save_native_viewable_binary_file_names(geode_object, data, folder_absolute_p
160
165
  f = open(saved_light_viewable_file_path, "rb")
161
166
  binary_light_viewable = f.read()
162
167
  f.close()
163
- return {
164
- "native_file_name": os.path.basename(saved_native_file_path[0]),
165
- "viewable_file_name": os.path.basename(saved_viewable_file_path[0]),
166
- "binary_light_viewable": str(binary_light_viewable, "utf-8"),
167
- }
168
-
169
-
170
- def create_response_with_binary_light_viewable(
171
- geode_object, data, folder_absolute_path
172
- ):
173
- generated_id = str(uuid.uuid4()).replace("-", "")
174
- name = data.name()
175
- object_type = geode_functions.get_object_type(geode_object)
176
-
177
- native_file_name, viewable_file_name, binary_light_viewable = (
178
- save_native_viewable_binary_file_names(geode_object, data, folder_absolute_path)
179
- )
180
168
 
181
169
  return {
182
170
  "name": name,
183
- "native_file_name": native_file_name,
184
- "viewable_file_name": viewable_file_name,
171
+ "native_file_name": os.path.basename(saved_native_file_path[0]),
172
+ "viewable_file_name": os.path.basename(saved_viewable_file_path),
185
173
  "id": generated_id,
186
174
  "object_type": object_type,
187
- "binary_light_viewable": binary_light_viewable,
175
+ "binary_light_viewable": str(binary_light_viewable, "utf-8"),
188
176
  "geode_object": geode_object,
189
177
  }
@@ -1,10 +1,12 @@
1
1
  # Standard library imports
2
+ import re
3
+ import os
2
4
 
3
5
  # Third party imports
4
6
  import flask
5
7
 
6
8
  # Local application imports
7
- from src.opengeodeweb_back import utils_functions
9
+ from src.opengeodeweb_back import geode_functions, utils_functions
8
10
 
9
11
 
10
12
  def test_increment_request_counter(app_context):
@@ -67,3 +69,25 @@ def test_handle_exception(client):
67
69
  assert type(data["description"]) is str
68
70
  assert type(data["name"]) is str
69
71
  assert type(data["code"]) is int
72
+
73
+
74
+ def test_generate_native_viewable_and_light_viewable():
75
+ geode_object = "BRep"
76
+ folder_absolute_path = os.path.abspath("./data")
77
+ data = geode_functions.load(
78
+ geode_object, os.path.join(folder_absolute_path, "test.og_brep")
79
+ )
80
+ folder_absolute_path = "None"
81
+ result = utils_functions.generate_native_viewable_and_light_viewable(
82
+ geode_object, data, folder_absolute_path
83
+ )
84
+ assert type(result) is dict
85
+ assert type(result["name"]) is str
86
+ assert type(result["native_file_name"]) is str
87
+ assert re.match(r"[0-9a-f]{32}\.[a-zA-Z0-9]+", result["native_file_name"])
88
+ assert type(result["viewable_file_name"]) is str
89
+ assert re.match(r"[0-9a-f]{32}\.[a-zA-Z0-9]+", result["viewable_file_name"])
90
+ assert type(result["id"]) is str
91
+ assert re.match(r"[0-9a-f]{32}", result["id"])
92
+ assert type(result["object_type"]) is str
93
+ assert type(result["binary_light_viewable"]) is str