OpenGeodeWeb-Back 6.1.4rc1__tar.gz → 6.2.0__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 (109) hide show
  1. {opengeodeweb_back-6.1.4rc1/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-6.2.0}/PKG-INFO +6 -6
  2. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/pyproject.toml +1 -1
  3. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/requirements.txt +5 -5
  4. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +6 -6
  5. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +2 -2
  6. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/OpenGeodeWeb_Back.egg-info/requires.txt +5 -5
  7. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_brep.py +12 -0
  8. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_model.py +12 -0
  9. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_section.py +12 -0
  10. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/models/blueprint_models.py +34 -8
  11. opengeodeweb_back-6.2.0/src/opengeodeweb_back/routes/models/schemas/__init__.py +1 -0
  12. opengeodeweb_back-6.1.4rc1/src/opengeodeweb_back/routes/models/schemas/mesh_components.json → opengeodeweb_back-6.2.0/src/opengeodeweb_back/routes/models/schemas/model_components.json +1 -1
  13. opengeodeweb_back-6.1.4rc1/src/opengeodeweb_back/routes/models/schemas/mesh_components.py → opengeodeweb_back-6.2.0/src/opengeodeweb_back/routes/models/schemas/model_components.py +1 -1
  14. opengeodeweb_back-6.2.0/src/opengeodeweb_back/test_utils.py +49 -0
  15. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/tests/test_models_routes.py +18 -3
  16. opengeodeweb_back-6.1.4rc1/src/opengeodeweb_back/routes/models/schemas/__init__.py +0 -1
  17. opengeodeweb_back-6.1.4rc1/src/opengeodeweb_back/test_utils.py +0 -30
  18. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/LICENSE +0 -0
  19. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/README.md +0 -0
  20. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/setup.cfg +0 -0
  21. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  22. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
  23. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  24. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/__init__.py +0 -0
  25. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/app.py +0 -0
  26. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/app_config.py +0 -0
  27. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_functions.py +0 -0
  28. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/__init__.py +0 -0
  29. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +0 -0
  30. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
  31. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
  32. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
  33. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
  34. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
  35. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
  36. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
  37. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
  38. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
  39. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
  40. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
  41. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
  42. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
  43. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
  44. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
  45. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
  46. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
  47. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
  48. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
  49. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
  50. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
  51. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
  52. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +0 -0
  53. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
  54. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
  55. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
  56. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
  57. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
  58. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
  59. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/geode_objects/types.py +0 -0
  60. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/py.typed +0 -0
  61. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/blueprint_routes.py +0 -0
  62. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/create/blueprint_create.py +0 -0
  63. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/create/schemas/__init__.py +0 -0
  64. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/create/schemas/point.json +0 -0
  65. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/create/schemas/point.py +0 -0
  66. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/__init__.py +0 -0
  67. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  68. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
  69. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  70. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
  71. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -0
  72. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -0
  73. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -0
  74. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -0
  75. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
  76. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
  77. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  78. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
  79. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  80. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +0 -0
  81. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/import_extension.json +0 -0
  82. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/import_extension.py +0 -0
  83. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
  84. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
  85. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
  86. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/inspect_file.py +0 -0
  87. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
  88. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
  89. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  90. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/missing_files.py +0 -0
  91. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  92. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
  93. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  94. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -0
  95. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  96. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -0
  97. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  98. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
  99. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  100. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
  101. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  102. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
  103. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  104. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -0
  105. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/src/opengeodeweb_back/utils_functions.py +0 -0
  106. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/tests/test_create_routes.py +0 -0
  107. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/tests/test_geode_functions.py +0 -0
  108. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/tests/test_routes.py +0 -0
  109. {opengeodeweb_back-6.1.4rc1 → opengeodeweb_back-6.2.0}/tests/test_utils_functions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.1.4rc1
3
+ Version: 6.2.0
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
@@ -16,15 +16,15 @@ Requires-Dist: blinker>=1
16
16
  Requires-Dist: click>=8
17
17
  Requires-Dist: flask[async]>=3
18
18
  Requires-Dist: flask-cors==6.0.1
19
- Requires-Dist: geode-common==33.18.0
19
+ Requires-Dist: geode-common==33.19.0
20
20
  Requires-Dist: geode-viewables==3.3.4
21
21
  Requires-Dist: itsdangerous>=2
22
22
  Requires-Dist: jinja2>=3
23
23
  Requires-Dist: markupsafe>=3
24
- Requires-Dist: opengeode-core==15.31.1
25
- Requires-Dist: opengeode-geosciences==9.5.8
26
- Requires-Dist: opengeode-geosciencesio==5.8.9
27
- Requires-Dist: opengeode-inspector==6.8.16
24
+ Requires-Dist: opengeode-core==15.31.5
25
+ Requires-Dist: opengeode-geosciences==9.5.9
26
+ Requires-Dist: opengeode-geosciencesio==5.8.10
27
+ Requires-Dist: opengeode-inspector==6.8.17
28
28
  Requires-Dist: opengeode-io==7.4.8
29
29
  Requires-Dist: werkzeug==3.1.2
30
30
  Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.14
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "OpenGeodeWeb-Back"
7
- version = "6.1.4-rc.1"
7
+ version = "6.2.0"
8
8
  dynamic = ["dependencies"]
9
9
  authors = [{ name = "Geode-solutions", email = "team-web@geode-solutions.com" }]
10
10
  description = "OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem"
@@ -16,7 +16,7 @@ flask[async]>=3
16
16
  # flask-cors
17
17
  flask-cors==6.0.1
18
18
  # via -r requirements.in
19
- geode-common==33.18.0
19
+ geode-common==33.19.0
20
20
  # via
21
21
  # -r requirements.in
22
22
  # geode-viewables
@@ -31,7 +31,7 @@ markupsafe>=3
31
31
  # flask
32
32
  # jinja2
33
33
  # werkzeug
34
- opengeode-core==15.31.1
34
+ opengeode-core==15.31.5
35
35
  # via
36
36
  # -r requirements.in
37
37
  # geode-common
@@ -40,14 +40,14 @@ opengeode-core==15.31.1
40
40
  # opengeode-geosciencesio
41
41
  # opengeode-inspector
42
42
  # opengeode-io
43
- opengeode-geosciences==9.5.8
43
+ opengeode-geosciences==9.5.9
44
44
  # via
45
45
  # -r requirements.in
46
46
  # geode-viewables
47
47
  # opengeode-geosciencesio
48
- opengeode-geosciencesio==5.8.9
48
+ opengeode-geosciencesio==5.8.10
49
49
  # via -r requirements.in
50
- opengeode-inspector==6.8.16
50
+ opengeode-inspector==6.8.17
51
51
  # via -r requirements.in
52
52
  opengeode-io==7.4.8
53
53
  # via
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.1.4rc1
3
+ Version: 6.2.0
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
@@ -16,15 +16,15 @@ Requires-Dist: blinker>=1
16
16
  Requires-Dist: click>=8
17
17
  Requires-Dist: flask[async]>=3
18
18
  Requires-Dist: flask-cors==6.0.1
19
- Requires-Dist: geode-common==33.18.0
19
+ Requires-Dist: geode-common==33.19.0
20
20
  Requires-Dist: geode-viewables==3.3.4
21
21
  Requires-Dist: itsdangerous>=2
22
22
  Requires-Dist: jinja2>=3
23
23
  Requires-Dist: markupsafe>=3
24
- Requires-Dist: opengeode-core==15.31.1
25
- Requires-Dist: opengeode-geosciences==9.5.8
26
- Requires-Dist: opengeode-geosciencesio==5.8.9
27
- Requires-Dist: opengeode-inspector==6.8.16
24
+ Requires-Dist: opengeode-core==15.31.5
25
+ Requires-Dist: opengeode-geosciences==9.5.9
26
+ Requires-Dist: opengeode-geosciencesio==5.8.10
27
+ Requires-Dist: opengeode-inspector==6.8.17
28
28
  Requires-Dist: opengeode-io==7.4.8
29
29
  Requires-Dist: werkzeug==3.1.2
30
30
  Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.14
@@ -57,8 +57,8 @@ src/opengeodeweb_back/routes/create/schemas/point.json
57
57
  src/opengeodeweb_back/routes/create/schemas/point.py
58
58
  src/opengeodeweb_back/routes/models/blueprint_models.py
59
59
  src/opengeodeweb_back/routes/models/schemas/__init__.py
60
- src/opengeodeweb_back/routes/models/schemas/mesh_components.json
61
- src/opengeodeweb_back/routes/models/schemas/mesh_components.py
60
+ src/opengeodeweb_back/routes/models/schemas/model_components.json
61
+ src/opengeodeweb_back/routes/models/schemas/model_components.py
62
62
  src/opengeodeweb_back/routes/schemas/__init__.py
63
63
  src/opengeodeweb_back/routes/schemas/allowed_files.json
64
64
  src/opengeodeweb_back/routes/schemas/allowed_files.py
@@ -3,15 +3,15 @@ blinker>=1
3
3
  click>=8
4
4
  flask[async]>=3
5
5
  flask-cors==6.0.1
6
- geode-common==33.18.0
6
+ geode-common==33.19.0
7
7
  geode-viewables==3.3.4
8
8
  itsdangerous>=2
9
9
  jinja2>=3
10
10
  markupsafe>=3
11
- opengeode-core==15.31.1
12
- opengeode-geosciences==9.5.8
13
- opengeode-geosciencesio==5.8.9
14
- opengeode-inspector==6.8.16
11
+ opengeode-core==15.31.5
12
+ opengeode-geosciences==9.5.9
13
+ opengeode-geosciencesio==5.8.10
14
+ opengeode-inspector==6.8.17
15
15
  opengeode-io==7.4.8
16
16
  werkzeug==3.1.2
17
17
  opengeodeweb-microservice==1.*,>=1.0.14
@@ -76,6 +76,18 @@ class GeodeBRep(GeodeModel):
76
76
  def mesh_components(self) -> ComponentRegistry:
77
77
  return self.brep.mesh_components()
78
78
 
79
+ def collection_components(self) -> ComponentRegistry:
80
+ return self.brep.collection_components()
81
+
82
+ def boundaries(self, id: og.uuid) -> list[og.ComponentID]:
83
+ return self.brep.boundaries(id)
84
+
85
+ def internals(self, id: og.uuid) -> list[og.ComponentID]:
86
+ return self.brep.internals(id)
87
+
88
+ def items(self, id: og.uuid) -> list[og.ComponentID]:
89
+ return self.brep.items(id)
90
+
79
91
  def inspect(self) -> og_inspector.BRepInspectionResult:
80
92
  return og_inspector.inspect_brep(self.brep)
81
93
 
@@ -23,3 +23,15 @@ class GeodeModel(GeodeObject):
23
23
 
24
24
  @abstractmethod
25
25
  def mesh_components(self) -> ComponentRegistry: ...
26
+
27
+ @abstractmethod
28
+ def collection_components(self) -> ComponentRegistry: ...
29
+
30
+ @abstractmethod
31
+ def boundaries(self, id: og.uuid) -> list[og.ComponentID]: ...
32
+
33
+ @abstractmethod
34
+ def internals(self, id: og.uuid) -> list[og.ComponentID]: ...
35
+
36
+ @abstractmethod
37
+ def items(self, id: og.uuid) -> list[og.ComponentID]: ...
@@ -78,6 +78,18 @@ class GeodeSection(GeodeModel):
78
78
  def mesh_components(self) -> ComponentRegistry:
79
79
  return self.section.mesh_components()
80
80
 
81
+ def collection_components(self) -> ComponentRegistry:
82
+ return self.section.collection_components()
83
+
84
+ def boundaries(self, id: og.uuid) -> list[og.ComponentID]:
85
+ return self.section.boundaries(id)
86
+
87
+ def internals(self, id: og.uuid) -> list[og.ComponentID]:
88
+ return self.section.internals(id)
89
+
90
+ def items(self, id: og.uuid) -> list[og.ComponentID]:
91
+ return self.section.items(id)
92
+
81
93
  def inspect(self) -> og_inspector.SectionInspectionResult:
82
94
  return og_inspector.inspect_section(self.section)
83
95
 
@@ -12,14 +12,14 @@ schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas
12
12
 
13
13
 
14
14
  @routes.route(
15
- schemas_dict["mesh_components"]["route"],
16
- methods=schemas_dict["mesh_components"]["methods"],
15
+ schemas_dict["model_components"]["route"],
16
+ methods=schemas_dict["model_components"]["methods"],
17
17
  )
18
- def mesh_components() -> flask.Response:
18
+ def model_components() -> flask.Response:
19
19
  json_data = utils_functions.validate_request(
20
- flask.request, schemas_dict["mesh_components"]
20
+ flask.request, schemas_dict["model_components"]
21
21
  )
22
- params = schemas.MeshComponents.from_dict(json_data)
22
+ params = schemas.ModelComponents.from_dict(json_data)
23
23
  model = geode_functions.load_geode_object(params.id)
24
24
  if not isinstance(model, GeodeModel):
25
25
  flask.abort(400, f"{params.id} is not a GeodeModel")
@@ -44,14 +44,40 @@ def mesh_components() -> flask.Response:
44
44
  geode_id = id.string()
45
45
  component_name = geode_id
46
46
  viewer_id = uuid_to_flat_index[geode_id]
47
-
47
+ boundaries = model.boundaries(id)
48
+ boundaries_uuid = [boundary.id().string() for boundary in boundaries]
49
+ internals = model.internals(id)
50
+ internals_uuid = [internal.id().string() for internal in internals]
48
51
  mesh_component_object = {
49
- "id": params.id,
50
52
  "viewer_id": viewer_id,
51
53
  "geode_id": geode_id,
52
54
  "name": component_name,
53
55
  "type": component_type,
56
+ "boundaries": boundaries_uuid,
57
+ "internals": internals_uuid,
54
58
  }
55
59
  mesh_components.append(mesh_component_object)
56
60
 
57
- return flask.make_response({"mesh_components": mesh_components}, 200)
61
+ model_collection_components = model.collection_components()
62
+ collection_components = []
63
+ for collection_component, ids in model_collection_components.items():
64
+ component_type = collection_component.get()
65
+ for id in ids:
66
+ geode_id = id.string()
67
+ items = model.items(id)
68
+ items_uuid = [item.id().string() for item in items]
69
+ collection_component_object = {
70
+ "geode_id": geode_id,
71
+ "name": geode_id,
72
+ "type": component_type,
73
+ "items": items_uuid,
74
+ }
75
+ collection_components.append(collection_component_object)
76
+
77
+ return flask.make_response(
78
+ {
79
+ "mesh_components": mesh_components,
80
+ "collection_components": collection_components,
81
+ },
82
+ 200,
83
+ )
@@ -0,0 +1 @@
1
+ from .model_components import *
@@ -3,7 +3,7 @@ from dataclasses import dataclass
3
3
 
4
4
 
5
5
  @dataclass
6
- class MeshComponents(DataClassJsonMixin):
6
+ class ModelComponents(DataClassJsonMixin):
7
7
  def __post_init__(self) -> None:
8
8
  print(self, flush=True)
9
9
 
@@ -0,0 +1,49 @@
1
+ # Standard library imports
2
+ from typing import Callable, Any
3
+
4
+ # Third party imports
5
+ from flask.testing import FlaskClient
6
+
7
+ # Local application imports
8
+
9
+ JsonData = dict[str, Any]
10
+
11
+
12
+ def test_route_wrong_params(
13
+ client: FlaskClient,
14
+ route: str,
15
+ get_full_data: Callable[[], JsonData],
16
+ path: list[str | int] | None = None,
17
+ ) -> None:
18
+ if path is None:
19
+ path = []
20
+
21
+ def get_json() -> tuple[JsonData, Any]:
22
+ json = get_full_data()
23
+ target: Any = json
24
+ for sub_path in path:
25
+ target = target[sub_path]
26
+ return json, target
27
+
28
+ data = get_json()[1]
29
+ if isinstance(data, dict):
30
+ for key, value in data.items():
31
+ json, target = get_json()
32
+ target.pop(key)
33
+ response = client.post(route, json=json)
34
+ if response.status_code == 400:
35
+ error_description: str = response.get_json()["description"]
36
+ assert "must contain" in error_description
37
+ assert f"'{key}'" in error_description
38
+ if isinstance(value, (dict, list)):
39
+ test_route_wrong_params(client, route, get_full_data, path + [key])
40
+
41
+ json, target = get_json()
42
+ target["dumb_key"] = "dumb_value"
43
+ response = client.post(route, json=json)
44
+ assert response.status_code == 400
45
+ error_description = response.get_json()["description"]
46
+ assert "must not contain" in error_description
47
+ assert "'dumb_key'" in error_description
48
+ elif isinstance(data, list) and data:
49
+ test_route_wrong_params(client, route, get_full_data, path + [0])
@@ -18,12 +18,12 @@ base_dir = os.path.abspath(os.path.dirname(__file__))
18
18
  data_dir = os.path.join(base_dir, "data")
19
19
 
20
20
 
21
- def test_mesh_components(client: FlaskClient) -> None:
21
+ def test_model_components(client: FlaskClient) -> None:
22
22
  geode_object_type = "BRep"
23
23
  filename = "cube.og_brep"
24
24
  response = test_save_viewable_file(client, geode_object_type, filename)
25
25
 
26
- route = "/opengeodeweb_back/models/mesh_components"
26
+ route = "/opengeodeweb_back/models/model_components"
27
27
  brep_filename = os.path.join(data_dir, "cube.og_brep")
28
28
 
29
29
  response = client.post(route, json={"id": response.get_json()["id"]})
@@ -34,11 +34,26 @@ def test_mesh_components(client: FlaskClient) -> None:
34
34
  assert len(mesh_components) > 0
35
35
  for mesh_component in mesh_components:
36
36
  assert isinstance(mesh_component, object)
37
- assert isinstance(mesh_component["id"], str)
38
37
  assert isinstance(mesh_component["geode_id"], str)
39
38
  assert isinstance(mesh_component["viewer_id"], int)
40
39
  assert isinstance(mesh_component["name"], str)
41
40
  assert isinstance(mesh_component["type"], str)
41
+ assert isinstance(mesh_component["boundaries"], list)
42
+ for boundary_uuid in mesh_component["boundaries"]:
43
+ assert isinstance(boundary_uuid, str)
44
+ assert isinstance(mesh_component["internals"], list)
45
+ for internal_uuid in mesh_component["internals"]:
46
+ assert isinstance(internal_uuid, str)
47
+ assert "collection_components" in response.get_json()
48
+ collection_components = response.get_json()["collection_components"]
49
+ assert isinstance(collection_components, list)
50
+ for collection_component in collection_components:
51
+ assert isinstance(collection_component, object)
52
+ assert isinstance(collection_component["geode_id"], str)
53
+ assert isinstance(collection_component["name"], str)
54
+ assert isinstance(collection_component["items"], list)
55
+ for item_uuid in collection_component["items"]:
56
+ assert isinstance(item_uuid, str)
42
57
 
43
58
 
44
59
  def test_export_project_route(client: FlaskClient, tmp_path: Path) -> None:
@@ -1 +0,0 @@
1
- from .mesh_components import *
@@ -1,30 +0,0 @@
1
- # Standard library imports
2
- from typing import Callable, Any
3
-
4
- # Third party imports
5
- from flask.testing import FlaskClient
6
-
7
- # Local application imports
8
-
9
- JsonData = dict[str, Any]
10
-
11
-
12
- def test_route_wrong_params(
13
- client: FlaskClient, route: str, get_full_data: Callable[[], JsonData]
14
- ) -> None:
15
- for key, value in get_full_data().items():
16
- json = get_full_data()
17
- json.pop(key)
18
- response = client.post(route, json=json)
19
- assert response.status_code == 400
20
- error_description = response.get_json()["description"]
21
- assert "data must contain" in error_description
22
- assert f"'{key}'" in error_description
23
-
24
- json = get_full_data()
25
- json["dumb_key"] = "dumb_value"
26
- response = client.post(route, json=json)
27
- assert response.status_code == 400
28
- error_description = response.get_json()["description"]
29
- assert "data must not contain" in error_description
30
- assert "'dumb_key'" in error_description