Skip to content

Commit bd4e38a

Browse files
Merge pull request #149 from Geode-solutions/next
feat(routes): /save_viewables also return light_viewable
2 parents bd1b4d0 + dcc6e8d commit bd4e38a

File tree

7 files changed

+74
-22
lines changed

7 files changed

+74
-22
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
55

66
[project]
77
name = "OpenGeodeWeb-Back"
8-
version = "5.7.4"
8+
version = "5.8.0-rc.1"
99
dynamic = ["dependencies"]
1010
authors = [
1111
{ name="Geode-solutions", email="[email protected]" },

requirements.txt

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# This file is autogenerated by pip-compile with Python 3.10
2+
# This file is autogenerated by pip-compile with Python 3.12
33
# by the following command:
44
#
55
# pip-compile requirements.in
@@ -14,18 +14,18 @@ blinker==1.9.0
1414
# via flask
1515
click==8.1.8
1616
# via flask
17-
flask[async]==3.1.0
17+
flask[async]==3.1.1
1818
# via
1919
# -r requirements.in
2020
# flask-cors
2121
flask-cors==5.0.1
2222
# via -r requirements.in
23-
geode-background==9.2.4
23+
geode-background==9.2.6
2424
# via
2525
# geode-explicit
2626
# geode-implicit
2727
# geode-simplex
28-
geode-common==33.8.1
28+
geode-common==33.8.4
2929
# via
3030
# -r requirements.in
3131
# geode-background
@@ -35,22 +35,22 @@ geode-common==33.8.1
3535
# geode-numerics
3636
# geode-simplex
3737
# geode-viewables
38-
geode-conversion==6.2.13
38+
geode-conversion==6.3.0
3939
# via
4040
# geode-explicit
4141
# geode-implicit
42-
geode-explicit==6.1.39
42+
geode-explicit==6.2.0
4343
# via
4444
# -r requirements.in
4545
# geode-implicit
46-
geode-implicit==3.7.10
46+
geode-implicit==3.9.1
4747
# via -r requirements.in
48-
geode-numerics==6.0.6
48+
geode-numerics==6.2.0
4949
# via
5050
# -r requirements.in
5151
# geode-implicit
5252
# geode-simplex
53-
geode-simplex==9.3.2
53+
geode-simplex==9.4.0
5454
# via
5555
# -r requirements.in
5656
# geode-implicit
@@ -66,9 +66,10 @@ jsonschema-specifications==2025.4.1
6666
# via jsonschema
6767
markupsafe==3.0.2
6868
# via
69+
# flask
6970
# jinja2
7071
# werkzeug
71-
opengeode-core==15.18.0
72+
opengeode-core==15.19.1
7273
# via
7374
# -r requirements.in
7475
# geode-background
@@ -83,17 +84,17 @@ opengeode-core==15.18.0
8384
# opengeode-geosciencesio
8485
# opengeode-inspector
8586
# opengeode-io
86-
opengeode-geosciences==8.4.7
87+
opengeode-geosciences==8.4.8
8788
# via
8889
# -r requirements.in
8990
# geode-implicit
9091
# geode-viewables
9192
# opengeode-geosciencesio
92-
opengeode-geosciencesio==5.3.9
93+
opengeode-geosciencesio==5.3.10
9394
# via
9495
# -r requirements.in
9596
# geode-implicit
96-
opengeode-inspector==6.4.1
97+
opengeode-inspector==6.5.0
9798
# via
9899
# -r requirements.in
99100
# geode-explicit
@@ -109,14 +110,12 @@ referencing==0.36.2
109110
# via
110111
# jsonschema
111112
# jsonschema-specifications
112-
rpds-py==0.24.0
113+
rpds-py==0.25.0
113114
# via
114115
# jsonschema
115116
# referencing
116117
typing-extensions==4.13.2
117-
# via
118-
# asgiref
119-
# referencing
118+
# via referencing
120119
werkzeug==3.1.3
121120
# via
122121
# -r requirements.in

src/opengeodeweb_back/geode_functions.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ def save_viewable(geode_object: str, data, folder_absolute_path: str, id: str):
101101
)
102102

103103

104+
def save_light_viewable(geode_object: str, data, folder_absolute_path: str, id: str):
105+
return geode_object_value(geode_object)["save_light_viewable"](
106+
data, os.path.join(folder_absolute_path, id)
107+
)
108+
109+
104110
def geode_object_input_extensions(geode_object: str):
105111
geode_object_input_list_creators = input_factory(geode_object).list_creators()
106112
geode_object_input_list_creators.sort()

src/opengeodeweb_back/geode_objects.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def geode_objects_dict():
4040
"is_3D": True,
4141
"is_viewable": True,
4242
"save_viewable": g_v.save_viewable_brep,
43+
"save_light_viewable": g_v.save_light_viewable_brep,
4344
"inspector": og_inspector.inspect_brep,
4445
},
4546
"CrossSection": {
@@ -62,6 +63,7 @@ def geode_objects_dict():
6263
"is_3D": False,
6364
"is_viewable": True,
6465
"save_viewable": g_v.save_viewable_cross_section,
66+
"save_light_viewable": g_v.save_light_viewable_cross_section,
6567
"inspector": og_inspector.inspect_section,
6668
},
6769
"EdgedCurve2D": {
@@ -84,6 +86,7 @@ def geode_objects_dict():
8486
"is_3D": False,
8587
"is_viewable": True,
8688
"save_viewable": g_v.save_viewable_edged_curve2D,
89+
"save_light_viewable": g_v.save_light_viewable_edged_curve2D,
8790
"inspector": og_inspector.inspect_edged_curve2D,
8891
},
8992
"EdgedCurve3D": {
@@ -106,6 +109,7 @@ def geode_objects_dict():
106109
"is_3D": True,
107110
"is_viewable": True,
108111
"save_viewable": g_v.save_viewable_edged_curve3D,
112+
"save_light_viewable": g_v.save_light_viewable_edged_curve3D,
109113
"inspector": og_inspector.inspect_edged_curve3D,
110114
},
111115
"Graph": {
@@ -142,6 +146,7 @@ def geode_objects_dict():
142146
"is_3D": True,
143147
"is_viewable": True,
144148
"save_viewable": g_v.save_viewable_hybrid_solid3D,
149+
"save_light_viewable": g_v.save_light_viewable_hybrid_solid3D,
145150
"inspector": og_inspector.inspect_solid3D,
146151
},
147152
"ImplicitCrossSection": {
@@ -164,6 +169,7 @@ def geode_objects_dict():
164169
"is_3D": False,
165170
"is_viewable": True,
166171
"save_viewable": g_v.save_viewable_implicit_cross_section,
172+
"save_light_viewable": g_v.save_light_viewable_implicit_cross_section,
167173
"inspector": og_inspector.inspect_section,
168174
},
169175
"ImplicitStructuralModel": {
@@ -186,6 +192,7 @@ def geode_objects_dict():
186192
"is_3D": True,
187193
"is_viewable": True,
188194
"save_viewable": g_v.save_viewable_implicit_structural_model,
195+
"save_light_viewable": g_v.save_light_viewable_implicit_structural_model,
189196
"inspector": og_inspector.inspect_brep,
190197
},
191198
"LightRegularGrid2D": {
@@ -201,7 +208,8 @@ def geode_objects_dict():
201208
"elements": [points, polygons],
202209
"is_3D": False,
203210
"is_viewable": True,
204-
"save_viewable": g_v.save_viewable_light_regular_grid2D,
211+
"save_viewable": g_v.save_light_viewable_light_regular_grid2D,
212+
"save_light_viewable": g_v.save_light_viewable_light_regular_grid2D,
205213
},
206214
"LightRegularGrid3D": {
207215
"class": og.LightRegularGrid3D,
@@ -217,6 +225,7 @@ def geode_objects_dict():
217225
"is_3D": True,
218226
"is_viewable": True,
219227
"save_viewable": g_v.save_viewable_light_regular_grid3D,
228+
"save_light_viewable": g_v.save_light_viewable_light_regular_grid3D,
220229
},
221230
"PointSet2D": {
222231
"class": og.PointSet2D,
@@ -238,6 +247,7 @@ def geode_objects_dict():
238247
"is_3D": False,
239248
"is_viewable": True,
240249
"save_viewable": g_v.save_viewable_point_set2D,
250+
"save_light_viewable": g_v.save_light_viewable_point_set2D,
241251
"inspector": og_inspector.inspect_point_set2D,
242252
},
243253
"PointSet3D": {
@@ -260,6 +270,7 @@ def geode_objects_dict():
260270
"is_3D": True,
261271
"is_viewable": True,
262272
"save_viewable": g_v.save_viewable_point_set3D,
273+
"save_light_viewable": g_v.save_light_viewable_point_set3D,
263274
"inspector": og_inspector.inspect_point_set3D,
264275
},
265276
"PolygonalSurface2D": {
@@ -282,6 +293,7 @@ def geode_objects_dict():
282293
"is_3D": False,
283294
"is_viewable": True,
284295
"save_viewable": g_v.save_viewable_polygonal_surface2D,
296+
"save_light_viewable": g_v.save_light_viewable_polygonal_surface2D,
285297
"inspector": og_inspector.inspect_surface2D,
286298
},
287299
"PolygonalSurface3D": {
@@ -304,6 +316,7 @@ def geode_objects_dict():
304316
"is_3D": True,
305317
"is_viewable": True,
306318
"save_viewable": g_v.save_viewable_polygonal_surface3D,
319+
"save_light_viewable": g_v.save_light_viewable_polygonal_surface3D,
307320
"inspector": og_inspector.inspect_surface3D,
308321
},
309322
"PolyhedralSolid3D": {
@@ -326,6 +339,7 @@ def geode_objects_dict():
326339
"is_3D": True,
327340
"is_viewable": True,
328341
"save_viewable": g_v.save_viewable_polyhedral_solid3D,
342+
"save_light_viewable": g_v.save_light_viewable_polyhedral_solid3D,
329343
"inspector": og_inspector.inspect_solid3D,
330344
},
331345
"RasterImage2D": {
@@ -376,6 +390,7 @@ def geode_objects_dict():
376390
"is_3D": False,
377391
"is_viewable": True,
378392
"save_viewable": g_v.save_viewable_regular_grid2D,
393+
"save_light_viewable": g_v.save_light_viewable_regular_grid2D,
379394
},
380395
"RegularGrid3D": {
381396
"class": og.RegularGrid3D,
@@ -397,6 +412,7 @@ def geode_objects_dict():
397412
"is_3D": True,
398413
"is_viewable": True,
399414
"save_viewable": g_v.save_viewable_regular_grid3D,
415+
"save_light_viewable": g_v.save_light_viewable_regular_grid3D,
400416
},
401417
"Section": {
402418
"class": og.Section,
@@ -417,6 +433,7 @@ def geode_objects_dict():
417433
"is_3D": False,
418434
"is_viewable": True,
419435
"save_viewable": g_v.save_viewable_section,
436+
"save_light_viewable": g_v.save_light_viewable_section,
420437
"inspector": og_inspector.inspect_section,
421438
},
422439
"StructuralModel": {
@@ -439,6 +456,7 @@ def geode_objects_dict():
439456
"is_3D": True,
440457
"is_viewable": True,
441458
"save_viewable": g_v.save_viewable_structural_model,
459+
"save_light_viewable": g_v.save_light_viewable_structural_model,
442460
"inspector": og_inspector.inspect_brep,
443461
},
444462
"TetrahedralSolid3D": {
@@ -461,6 +479,7 @@ def geode_objects_dict():
461479
"is_3D": True,
462480
"is_viewable": True,
463481
"save_viewable": g_v.save_viewable_tetrahedral_solid3D,
482+
"save_light_viewable": g_v.save_light_viewable_tetrahedral_solid3D,
464483
"inspector": og_inspector.inspect_solid3D,
465484
},
466485
"TriangulatedSurface2D": {
@@ -483,6 +502,7 @@ def geode_objects_dict():
483502
"is_3D": False,
484503
"is_viewable": True,
485504
"save_viewable": g_v.save_viewable_triangulated_surface2D,
505+
"save_light_viewable": g_v.save_light_viewable_triangulated_surface2D,
486506
"inspector": og_inspector.inspect_surface2D,
487507
},
488508
"TriangulatedSurface3D": {
@@ -505,6 +525,7 @@ def geode_objects_dict():
505525
"is_3D": True,
506526
"is_viewable": True,
507527
"save_viewable": g_v.save_viewable_triangulated_surface3D,
528+
"save_light_viewable": g_v.save_light_viewable_triangulated_surface3D,
508529
"inspector": og_inspector.inspect_surface3D,
509530
},
510531
"VertexSet": {

src/opengeodeweb_back/routes/blueprint_routes.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,18 @@ def save_viewable_file():
260260
saved_viewable_file_path = geode_functions.save_viewable(
261261
flask.request.json["input_geode_object"], data, DATA_FOLDER_PATH, generated_id
262262
)
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+
263275
geode_functions.save(
264276
flask.request.json["input_geode_object"],
265277
data,
@@ -280,6 +292,7 @@ def save_viewable_file():
280292
"viewable_file_name": viewable_file_name,
281293
"id": generated_id,
282294
"object_type": object_type,
295+
"binary_light_viewable": str(binary_light_viewable, "utf-8"),
283296
},
284297
200,
285298
)

tests/test_geode_functions.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,24 @@ def test_load():
8787
if geode_functions.is_loadable(geode_object, file_absolute_path):
8888
data = geode_functions.load(geode_object, file_absolute_path)
8989
data_name = data.name()
90+
uu_id = str(uuid.uuid4()).replace("-", "")
9091
if "save_viewable" in value:
91-
uu_id = str(uuid.uuid4()).replace("-", "")
9292
viewable_file_path = geode_functions.save_viewable(
9393
geode_object,
9494
data,
9595
os.path.abspath(f"./output"),
9696
data_name,
9797
)
9898
os.remove(viewable_file_path)
99+
100+
if "save_light_viewable" in value:
101+
light_viewable_file_path = geode_functions.save_light_viewable(
102+
geode_object,
103+
data,
104+
os.path.abspath(f"./output"),
105+
data_name,
106+
)
107+
os.remove(light_viewable_file_path)
99108
geode_objects_and_output_extensions = (
100109
geode_functions.geode_objects_output_extensions(geode_object, data)
101110
)

tests/test_routes.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ def get_full_data():
4444
test_utils.test_route_wrong_params(client, route, get_full_data)
4545

4646

47-
def test_upload_file(client):
47+
def test_upload_file(client, filename="corbi.og_brep"):
4848
response = client.put(
4949
f"/upload_file",
50-
data={"file": FileStorage(open("./tests/corbi.og_brep", "rb"))},
50+
data={"file": FileStorage(open(f"./tests/{filename}", "rb"))},
5151
)
5252

5353
assert response.status_code == 201
@@ -139,6 +139,8 @@ def get_full_data():
139139

140140

141141
def test_save_viewable_file(client):
142+
143+
test_upload_file(client, filename="corbi.og_brep")
142144
route = f"/save_viewable_file"
143145

144146
def get_full_data():
@@ -161,6 +163,8 @@ def get_full_data():
161163
object_type = response.json["object_type"]
162164
assert type(object_type) is str
163165
assert object_type in ["model", "mesh"]
166+
binary_light_viewable = response.json["binary_light_viewable"]
167+
assert type(binary_light_viewable) is str
164168

165169
# Test all params
166170
test_utils.test_route_wrong_params(client, route, get_full_data)

0 commit comments

Comments
 (0)