Skip to content

Commit a7f54c9

Browse files
authored
Merge pull request #157 from Geode-solutions/fix(create_light_vieawable_pointset)
Fix(create light vieawable pointset)
2 parents 682130d + 952a1ec commit a7f54c9

File tree

2 files changed

+55
-71
lines changed

2 files changed

+55
-71
lines changed

src/opengeodeweb_back/routes/blueprint_routes.py

Lines changed: 7 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -241,61 +241,16 @@ def geode_objects_and_output_extensions():
241241
methods=save_viewable_file_json["methods"],
242242
)
243243
def save_viewable_file():
244+
utils_functions.validate_request(flask.request, save_viewable_file_json)
244245
UPLOAD_FOLDER = flask.current_app.config["UPLOAD_FOLDER"]
245246
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
246-
utils_functions.validate_request(flask.request, save_viewable_file_json)
247-
248247
secure_filename = werkzeug.utils.secure_filename(flask.request.json["filename"])
249248
file_path = os.path.abspath(os.path.join(UPLOAD_FOLDER, secure_filename))
250249
data = geode_functions.load(flask.request.json["input_geode_object"], file_path)
251-
generated_id = str(uuid.uuid4()).replace("-", "")
252-
253-
name = data.name()
254-
native_extension = data.native_extension()
255-
256-
absolute_native_file_path = os.path.join(
257-
UPLOAD_FOLDER, generated_id + "." + native_extension
258-
)
259-
260-
saved_viewable_file_path = geode_functions.save_viewable(
261-
flask.request.json["input_geode_object"], data, DATA_FOLDER_PATH, generated_id
262-
)
263-
264-
saved_light_viewable_file_path = geode_functions.save_light_viewable(
265-
flask.request.json["input_geode_object"],
266-
data,
267-
DATA_FOLDER_PATH,
268-
"light_" + generated_id,
269-
)
270-
271-
f = open(saved_light_viewable_file_path, "rb")
272-
binary_light_viewable = f.read()
273-
f.close()
274-
275-
geode_functions.save(
276-
flask.request.json["input_geode_object"],
277-
data,
278-
DATA_FOLDER_PATH,
279-
generated_id + "." + native_extension,
280-
)
281-
os.remove(os.path.join(UPLOAD_FOLDER, secure_filename))
282-
object_type = geode_functions.get_object_type(
283-
flask.request.json["input_geode_object"]
284-
)
285-
286-
native_file_name = os.path.basename(absolute_native_file_path)
287-
viewable_file_name = os.path.basename(saved_viewable_file_path)
288-
return flask.make_response(
289-
{
290-
"name": name,
291-
"native_file_name": native_file_name,
292-
"viewable_file_name": viewable_file_name,
293-
"id": generated_id,
294-
"object_type": object_type,
295-
"binary_light_viewable": str(binary_light_viewable, "utf-8"),
296-
},
297-
200,
250+
response_data = utils_functions.create_response_with_binary_light_viewable(
251+
flask.request.json["input_geode_object"], data, DATA_FOLDER_PATH
298252
)
253+
return flask.jsonify(response_data), 200
299254

300255

301256
with open(os.path.join(schemas, "create_point.json"), "r") as file:
@@ -315,29 +270,10 @@ def create_point():
315270
builder = geode_functions.create_builder("PointSet3D", PointSet3D)
316271
builder.create_point(opengeode.Point3D([x, y, z]))
317272
builder.set_name(title)
318-
name = PointSet3D.name()
319-
generated_id = str(uuid.uuid4()).replace("-", "")
320-
object_type = geode_functions.get_object_type("PointSet3D")
321-
saved_native_file_path = geode_functions.save(
322-
"PointSet3D", PointSet3D, DATA_FOLDER_PATH, generated_id + ".og_pts3d"
323-
)
324-
saved_viewable_file_path = geode_functions.save_viewable(
325-
"PointSet3D", PointSet3D, DATA_FOLDER_PATH, generated_id
326-
)
327-
328-
native_file_name = os.path.basename(saved_native_file_path[0])
329-
viewable_file_name = os.path.basename(saved_viewable_file_path)
330-
331273
return flask.make_response(
332-
{
333-
"viewable_file_name": os.path.basename(saved_viewable_file_path),
334-
"id": generated_id,
335-
"name": name,
336-
"native_file_name": native_file_name,
337-
"viewable_file_name": viewable_file_name,
338-
"object_type": object_type,
339-
"geode_object": "PointSet3D",
340-
},
274+
utils_functions.create_response_with_binary_light_viewable(
275+
"PointSet3D", PointSet3D, DATA_FOLDER_PATH
276+
),
341277
200,
342278
)
343279

src/opengeodeweb_back/utils_functions.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33
import threading
44
import time
5+
import uuid
56
import zipfile
67

78
# Third party imports
@@ -10,6 +11,7 @@
1011
import importlib.metadata as metadata
1112

1213
# Local application imports
14+
from . import geode_functions
1315

1416

1517
def increment_request_counter(current_app):
@@ -139,3 +141,49 @@ def handle_exception(e):
139141
)
140142
response.content_type = "application/json"
141143
return response
144+
145+
146+
def save_native_viewable_binary_file_names(geode_object, data, folder_absolute_path):
147+
generated_id = str(uuid.uuid4()).replace("-", "")
148+
saved_native_file_path = geode_functions.save(
149+
geode_object,
150+
data,
151+
folder_absolute_path,
152+
generated_id + "." + data.native_extension(),
153+
)
154+
saved_viewable_file_path = geode_functions.save_viewable(
155+
geode_object, data, folder_absolute_path, generated_id
156+
)
157+
saved_light_viewable_file_path = geode_functions.save_light_viewable(
158+
geode_object, data, folder_absolute_path, "light_" + generated_id
159+
)
160+
f = open(saved_light_viewable_file_path, "rb")
161+
binary_light_viewable = f.read()
162+
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+
181+
return {
182+
"name": name,
183+
"native_file_name": native_file_name,
184+
"viewable_file_name": viewable_file_name,
185+
"id": generated_id,
186+
"object_type": object_type,
187+
"binary_light_viewable": binary_light_viewable,
188+
"geode_object": geode_object,
189+
}

0 commit comments

Comments
 (0)