OpenGeodeWeb-Back 6.5.2rc7__tar.gz → 6.6.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 (107) hide show
  1. {opengeodeweb_back-6.5.2rc7/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-6.6.0}/PKG-INFO +2 -2
  2. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/pyproject.toml +1 -1
  3. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/requirements.txt +1 -1
  4. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +2 -2
  5. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +4 -2
  6. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/OpenGeodeWeb_Back.egg-info/requires.txt +1 -1
  7. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/app.py +1 -1
  8. opengeodeweb_back-6.6.0/src/opengeodeweb_back/routes/create/blueprint_create.py +64 -0
  9. opengeodeweb_back-6.6.0/src/opengeodeweb_back/routes/create/schemas/__init__.py +2 -0
  10. opengeodeweb_back-6.6.0/src/opengeodeweb_back/routes/create/schemas/edged_curve.json +38 -0
  11. opengeodeweb_back-6.6.0/src/opengeodeweb_back/routes/create/schemas/edged_curve.py +23 -0
  12. opengeodeweb_back-6.6.0/src/opengeodeweb_back/routes/create/schemas/point_set.json +27 -0
  13. opengeodeweb_back-6.5.2rc7/src/opengeodeweb_back/routes/create/schemas/point.py → opengeodeweb_back-6.6.0/src/opengeodeweb_back/routes/create/schemas/point_set.py +10 -1
  14. opengeodeweb_back-6.6.0/tests/test_create_routes.py +110 -0
  15. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/tests/test_routes.py +2 -4
  16. opengeodeweb_back-6.5.2rc7/src/opengeodeweb_back/routes/create/blueprint_create.py +0 -38
  17. opengeodeweb_back-6.5.2rc7/src/opengeodeweb_back/routes/create/schemas/__init__.py +0 -1
  18. opengeodeweb_back-6.5.2rc7/src/opengeodeweb_back/routes/create/schemas/point.json +0 -22
  19. opengeodeweb_back-6.5.2rc7/tests/test_create_routes.py +0 -59
  20. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/LICENSE +0 -0
  21. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/README.md +0 -0
  22. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/setup.cfg +0 -0
  23. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  24. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
  25. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  26. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/__init__.py +0 -0
  27. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/app_config.py +0 -0
  28. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_functions.py +0 -0
  29. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/__init__.py +0 -0
  30. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_brep.py +0 -0
  31. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +0 -0
  32. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
  33. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
  34. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
  35. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
  36. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
  37. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
  38. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
  39. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
  40. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
  41. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
  42. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
  43. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_model.py +0 -0
  44. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
  45. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
  46. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
  47. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
  48. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
  49. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
  50. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
  51. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
  52. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
  53. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
  54. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_section.py +0 -0
  55. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
  56. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +0 -0
  57. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
  58. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
  59. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
  60. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
  61. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
  62. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
  63. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/py.typed +0 -0
  64. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/blueprint_routes.py +0 -0
  65. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/__init__.py +0 -0
  66. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  67. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
  68. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  69. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
  70. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -0
  71. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -0
  72. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -0
  73. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -0
  74. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
  75. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
  76. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json +0 -0
  77. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py +0 -0
  78. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  79. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
  80. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  81. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +0 -0
  82. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
  83. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
  84. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
  85. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/inspect_file.py +0 -0
  86. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
  87. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
  88. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  89. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/missing_files.py +0 -0
  90. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  91. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
  92. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  93. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -0
  94. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  95. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -0
  96. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  97. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
  98. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  99. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
  100. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  101. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
  102. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  103. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -0
  104. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/test_utils.py +0 -0
  105. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/src/opengeodeweb_back/utils_functions.py +0 -0
  106. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.0}/tests/test_geode_functions.py +0 -0
  107. {opengeodeweb_back-6.5.2rc7 → opengeodeweb_back-6.6.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.5.2rc7
3
+ Version: 6.6.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
@@ -27,7 +27,7 @@ Requires-Dist: opengeode-geosciencesio==5.8.11
27
27
  Requires-Dist: opengeode-inspector==6.8.18
28
28
  Requires-Dist: opengeode-io==7.4.9
29
29
  Requires-Dist: werkzeug==3.1.2
30
- Requires-Dist: opengeodeweb-microservice==1.*,>=1.1.1
30
+ Requires-Dist: opengeodeweb-microservice==1.*,>=1.1.3
31
31
  Dynamic: license-file
32
32
 
33
33
  <h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "OpenGeodeWeb-Back"
7
- version = "6.5.2-rc.7"
7
+ version = "6.6.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"
@@ -60,4 +60,4 @@ werkzeug==3.1.2
60
60
  # flask
61
61
  # flask-cors
62
62
 
63
- opengeodeweb-microservice==1.*,>=1.1.1
63
+ opengeodeweb-microservice==1.*,>=1.1.3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.5.2rc7
3
+ Version: 6.6.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
@@ -27,7 +27,7 @@ Requires-Dist: opengeode-geosciencesio==5.8.11
27
27
  Requires-Dist: opengeode-inspector==6.8.18
28
28
  Requires-Dist: opengeode-io==7.4.9
29
29
  Requires-Dist: werkzeug==3.1.2
30
- Requires-Dist: opengeodeweb-microservice==1.*,>=1.1.1
30
+ Requires-Dist: opengeodeweb-microservice==1.*,>=1.1.3
31
31
  Dynamic: license-file
32
32
 
33
33
  <h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
@@ -52,8 +52,10 @@ src/opengeodeweb_back/geode_objects/geode_vertex_set.py
52
52
  src/opengeodeweb_back/routes/blueprint_routes.py
53
53
  src/opengeodeweb_back/routes/create/blueprint_create.py
54
54
  src/opengeodeweb_back/routes/create/schemas/__init__.py
55
- src/opengeodeweb_back/routes/create/schemas/point.json
56
- src/opengeodeweb_back/routes/create/schemas/point.py
55
+ src/opengeodeweb_back/routes/create/schemas/edged_curve.json
56
+ src/opengeodeweb_back/routes/create/schemas/edged_curve.py
57
+ src/opengeodeweb_back/routes/create/schemas/point_set.json
58
+ src/opengeodeweb_back/routes/create/schemas/point_set.py
57
59
  src/opengeodeweb_back/routes/schemas/__init__.py
58
60
  src/opengeodeweb_back/routes/schemas/allowed_files.json
59
61
  src/opengeodeweb_back/routes/schemas/allowed_files.py
@@ -14,4 +14,4 @@ opengeode-geosciencesio==5.8.11
14
14
  opengeode-inspector==6.8.18
15
15
  opengeode-io==7.4.9
16
16
  werkzeug==3.1.2
17
- opengeodeweb-microservice==1.*,>=1.1.1
17
+ opengeodeweb-microservice==1.*,>=1.1.3
@@ -145,7 +145,7 @@ def run_server(app: Flask) -> None:
145
145
  default=app.config.get("MINUTES_BEFORE_TIMEOUT"),
146
146
  help="Number of minutes before the server times out",
147
147
  )
148
- args = parser.parse_args()
148
+ args, _ = parser.parse_known_args()
149
149
  app.config.update(DATA_FOLDER_PATH=args.data_folder_path)
150
150
  app.config.update(
151
151
  EXTENSIONS_FOLDER_PATH=os.path.join(str(args.data_folder_path), "extensions")
@@ -0,0 +1,64 @@
1
+ # Standard library imports
2
+ import os
3
+
4
+ # Third party imports
5
+ import flask
6
+ import opengeode
7
+ from opengeodeweb_microservice.schemas import get_schemas_dict
8
+
9
+ # Local application imports
10
+ from opengeodeweb_back import geode_functions, utils_functions
11
+ import opengeodeweb_back.routes.create.schemas as schemas
12
+ from opengeodeweb_back.geode_objects.geode_point_set3d import GeodePointSet3D
13
+ from opengeodeweb_back.geode_objects.geode_edged_curve3d import GeodeEdgedCurve3D
14
+
15
+ routes = flask.Blueprint("create", __name__, url_prefix="/create")
16
+ schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
17
+
18
+
19
+ @routes.route(
20
+ schemas_dict["point_set"]["route"],
21
+ methods=schemas_dict["point_set"]["methods"],
22
+ )
23
+ def point_set() -> flask.Response:
24
+ json_data = utils_functions.validate_request(
25
+ flask.request, schemas_dict["point_set"]
26
+ )
27
+ params = schemas.PointSet.from_dict(json_data)
28
+
29
+ pointset = GeodePointSet3D()
30
+ builder = pointset.builder()
31
+ builder.set_name(params.name)
32
+ for point in params.points:
33
+ builder.create_point(opengeode.Point3D([point.x, point.y, point.z]))
34
+
35
+ result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
36
+ pointset
37
+ )
38
+ return flask.make_response(result, 200)
39
+
40
+
41
+ @routes.route(
42
+ schemas_dict["edged_curve"]["route"],
43
+ methods=schemas_dict["edged_curve"]["methods"],
44
+ )
45
+ def edged_curve() -> flask.Response:
46
+ """Endpoint to create an edged curve in 3D space."""
47
+ json_data = utils_functions.validate_request(
48
+ flask.request, schemas_dict["edged_curve"]
49
+ )
50
+ params = schemas.EdgedCurve.from_dict(json_data)
51
+
52
+ edged_curve_obj = GeodeEdgedCurve3D()
53
+ builder = edged_curve_obj.builder()
54
+ builder.set_name(params.name)
55
+ for point in params.points:
56
+ builder.create_point(opengeode.Point3D([point.x, point.y, point.z]))
57
+
58
+ for edge in params.edges:
59
+ builder.create_edge_with_vertices(edge[0], edge[1])
60
+
61
+ result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
62
+ edged_curve_obj
63
+ )
64
+ return flask.make_response(result, 200)
@@ -0,0 +1,2 @@
1
+ from .point_set import *
2
+ from .edged_curve import *
@@ -0,0 +1,38 @@
1
+ {
2
+ "route": "/edged_curve",
3
+ "methods": ["POST"],
4
+ "type": "object",
5
+ "properties": {
6
+ "name": {
7
+ "type": "string",
8
+ "minLength": 1
9
+ },
10
+ "points": {
11
+ "type": "array",
12
+ "items": {
13
+ "title": "EdgedCurvePoint",
14
+ "type": "object",
15
+ "properties": {
16
+ "x": { "type": "number" },
17
+ "y": { "type": "number" },
18
+ "z": { "type": "number" }
19
+ },
20
+ "required": ["x", "y", "z"],
21
+ "additionalProperties": false
22
+ },
23
+ "minItems": 2
24
+ },
25
+ "edges": {
26
+ "type": "array",
27
+ "items": {
28
+ "type": "array",
29
+ "items": { "type": "integer" },
30
+ "minItems": 2,
31
+ "maxItems": 2
32
+ },
33
+ "minItems": 1
34
+ }
35
+ },
36
+ "required": ["name", "points", "edges"],
37
+ "additionalProperties": false
38
+ }
@@ -0,0 +1,23 @@
1
+ from dataclasses_json import DataClassJsonMixin
2
+ from dataclasses import dataclass
3
+ from typing import List
4
+
5
+
6
+ @dataclass
7
+ class EdgedCurvePoint(DataClassJsonMixin):
8
+ def __post_init__(self) -> None:
9
+ print(self, flush=True)
10
+
11
+ x: float
12
+ y: float
13
+ z: float
14
+
15
+
16
+ @dataclass
17
+ class EdgedCurve(DataClassJsonMixin):
18
+ def __post_init__(self) -> None:
19
+ print(self, flush=True)
20
+
21
+ edges: List[List[int]]
22
+ name: str
23
+ points: List[EdgedCurvePoint]
@@ -0,0 +1,27 @@
1
+ {
2
+ "route": "/point_set",
3
+ "methods": ["POST"],
4
+ "type": "object",
5
+ "properties": {
6
+ "name": {
7
+ "type": "string",
8
+ "minLength": 1
9
+ },
10
+ "points": {
11
+ "type": "array",
12
+ "items": {
13
+ "type": "object",
14
+ "properties": {
15
+ "x": { "type": "number" },
16
+ "y": { "type": "number" },
17
+ "z": { "type": "number" }
18
+ },
19
+ "required": ["x", "y", "z"],
20
+ "additionalProperties": false
21
+ },
22
+ "minItems": 1
23
+ }
24
+ },
25
+ "required": ["name", "points"],
26
+ "additionalProperties": false
27
+ }
@@ -1,5 +1,6 @@
1
1
  from dataclasses_json import DataClassJsonMixin
2
2
  from dataclasses import dataclass
3
+ from typing import List
3
4
 
4
5
 
5
6
  @dataclass
@@ -7,7 +8,15 @@ class Point(DataClassJsonMixin):
7
8
  def __post_init__(self) -> None:
8
9
  print(self, flush=True)
9
10
 
10
- name: str
11
11
  x: float
12
12
  y: float
13
13
  z: float
14
+
15
+
16
+ @dataclass
17
+ class PointSet(DataClassJsonMixin):
18
+ def __post_init__(self) -> None:
19
+ print(self, flush=True)
20
+
21
+ name: str
22
+ points: List[Point]
@@ -0,0 +1,110 @@
1
+ # Standard library imports
2
+ import copy
3
+
4
+ # Third party imports
5
+ import pytest
6
+ from flask.testing import FlaskClient
7
+
8
+ # Local application imports
9
+ from opengeodeweb_back import test_utils
10
+
11
+
12
+ @pytest.fixture
13
+ def point_data() -> test_utils.JsonData:
14
+ return {"name": "test_point", "points": [{"x": 1.0, "y": 2.0, "z": 3.0}]}
15
+
16
+
17
+ @pytest.fixture
18
+ def curve_data() -> test_utils.JsonData:
19
+ return {
20
+ "name": "test_curve",
21
+ "points": [{"x": 0.0, "y": 0.0, "z": 0.0}, {"x": 1.0, "y": 1.0, "z": 1.0}],
22
+ "edges": [[0, 1]],
23
+ }
24
+
25
+
26
+ def test_create_point(client: FlaskClient, point_data: test_utils.JsonData) -> None:
27
+ """Test the creation of a point with valid data."""
28
+ route: str = "/opengeodeweb_back/create/point_set"
29
+
30
+ # Test with all required data
31
+ response = client.post(route, json=point_data)
32
+ assert response.status_code == 200
33
+
34
+ # Verify response data
35
+ response_data = response.get_json()
36
+ assert "viewable_file" in response_data
37
+ assert "id" in response_data
38
+ assert "name" in response_data
39
+ assert "native_file" in response_data
40
+ assert "viewer_type" in response_data
41
+ assert "geode_object_type" in response_data
42
+
43
+ assert response_data["name"] == point_data["name"]
44
+ assert response_data["viewer_type"] == "mesh"
45
+ assert response_data["geode_object_type"] == "PointSet3D"
46
+
47
+ # Test with missing parameters
48
+ test_utils.test_route_wrong_params(client, route, lambda: copy.deepcopy(point_data))
49
+
50
+
51
+ def test_create_point_set_multiple(client: FlaskClient) -> None:
52
+ """Test the creation of a point set with multiple points."""
53
+ route: str = "/opengeodeweb_back/create/point_set"
54
+ data = {
55
+ "name": "multiple_points",
56
+ "points": [
57
+ {"x": 1.0, "y": 2.0, "z": 3.0},
58
+ {"x": 4.0, "y": 5.0, "z": 6.0},
59
+ {"x": 7.0, "y": 8.0, "z": 9.0},
60
+ ],
61
+ }
62
+ response = client.post(route, json=data)
63
+ assert response.status_code == 200
64
+
65
+ response_data = response.get_json()
66
+ assert response_data["name"] == data["name"]
67
+ assert response_data["geode_object_type"] == "PointSet3D"
68
+
69
+
70
+ def test_create_point_with_invalid_data(client: FlaskClient) -> None:
71
+ """Test the point creation endpoint with invalid data."""
72
+ route: str = "/opengeodeweb_back/create/point_set"
73
+
74
+ # Test with non-numeric coordinates
75
+ invalid_data: test_utils.JsonData = {
76
+ "name": "invalid_point",
77
+ "points": [{"x": "not_a_number", "y": 2.0, "z": 3.0}],
78
+ }
79
+ response = client.post(route, json=invalid_data)
80
+ assert response.status_code == 400
81
+
82
+ # Test with missing coordinates
83
+ invalid_data = {"name": "invalid_point", "points": [{"y": 2.0, "z": 3.0}]}
84
+ response = client.post(route, json=invalid_data)
85
+ assert response.status_code == 400
86
+
87
+
88
+ def test_create_curve(client: FlaskClient, curve_data: test_utils.JsonData) -> None:
89
+ """Test the creation of a curve with valid data."""
90
+ route: str = "/opengeodeweb_back/create/edged_curve"
91
+
92
+ # Test with all required data
93
+ response = client.post(route, json=curve_data)
94
+ assert response.status_code == 200
95
+
96
+ # Verify response data
97
+ response_data = response.get_json()
98
+ assert "viewable_file" in response_data
99
+ assert "id" in response_data
100
+ assert "name" in response_data
101
+ assert "native_file" in response_data
102
+ assert "viewer_type" in response_data
103
+ assert "geode_object_type" in response_data
104
+
105
+ assert response_data["name"] == curve_data["name"]
106
+ assert response_data["viewer_type"] == "mesh"
107
+ assert response_data["geode_object_type"] == "EdgedCurve3D"
108
+
109
+ # Test with missing parameters
110
+ test_utils.test_route_wrong_params(client, route, lambda: copy.deepcopy(curve_data))
@@ -583,12 +583,10 @@ def test_import_project_route(client: FlaskClient, tmp_path: Path) -> None:
583
583
 
584
584
 
585
585
  def test_save_viewable_workflow_from_object(client: FlaskClient) -> None:
586
- route = "/opengeodeweb_back/create/point"
586
+ route = "/opengeodeweb_back/create/point_set"
587
587
  point_data = {
588
588
  "name": "workflow_point_3d",
589
- "x": 0.0,
590
- "y": 0.0,
591
- "z": 0.0,
589
+ "points": [{"x": 0.0, "y": 0.0, "z": 0.0}],
592
590
  }
593
591
 
594
592
  response = client.post(route, json=point_data)
@@ -1,38 +0,0 @@
1
- # Standard library imports
2
- import os
3
-
4
- # Third party imports
5
- import flask
6
- import opengeode
7
- from opengeodeweb_microservice.schemas import get_schemas_dict
8
-
9
- # Local application imports
10
- from opengeodeweb_back import geode_functions, utils_functions
11
- import opengeodeweb_back.routes.create.schemas as schemas
12
- from opengeodeweb_back.geode_objects.geode_point_set3d import GeodePointSet3D
13
- from opengeodeweb_back.geode_objects.geode_edged_curve3d import GeodeEdgedCurve3D
14
-
15
- routes = flask.Blueprint("create", __name__, url_prefix="/create")
16
- schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
17
-
18
-
19
- @routes.route(
20
- schemas_dict["point"]["route"],
21
- methods=schemas_dict["point"]["methods"],
22
- )
23
- def point() -> flask.Response:
24
- """Endpoint to create a single point in 3D space."""
25
- json_data = utils_functions.validate_request(flask.request, schemas_dict["point"])
26
- params = schemas.Point.from_dict(json_data)
27
-
28
- # Create the point
29
- pointset = GeodePointSet3D()
30
- builder = pointset.builder()
31
- builder.set_name(params.name)
32
- builder.create_point(opengeode.Point3D([params.x, params.y, params.z]))
33
-
34
- # Save and get info
35
- result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
36
- pointset
37
- )
38
- return flask.make_response(result, 200)
@@ -1,22 +0,0 @@
1
- {
2
- "route": "/point",
3
- "methods": ["POST"],
4
- "type": "object",
5
- "properties": {
6
- "name": {
7
- "type": "string",
8
- "minLength": 1
9
- },
10
- "x": {
11
- "type": "number"
12
- },
13
- "y": {
14
- "type": "number"
15
- },
16
- "z": {
17
- "type": "number"
18
- }
19
- },
20
- "required": ["name", "x", "y", "z"],
21
- "additionalProperties": false
22
- }
@@ -1,59 +0,0 @@
1
- # Standard library imports
2
- import uuid
3
-
4
- # Third party imports
5
- import pytest
6
- from flask.testing import FlaskClient
7
-
8
- # Local application imports
9
- from opengeodeweb_back import test_utils
10
-
11
-
12
- @pytest.fixture
13
- def point_data() -> test_utils.JsonData:
14
- return {"name": "test_point", "x": 1.0, "y": 2.0, "z": 3.0}
15
-
16
-
17
- def test_create_point(client: FlaskClient, point_data: test_utils.JsonData) -> None:
18
- """Test the creation of a point with valid data."""
19
- route: str = "/opengeodeweb_back/create/point"
20
-
21
- # Test with all required data
22
- response = client.post(route, json=point_data)
23
- assert response.status_code == 200
24
-
25
- # Verify response data
26
- response_data = response.get_json()
27
- assert "viewable_file" in response_data
28
- assert "id" in response_data
29
- assert "name" in response_data
30
- assert "native_file" in response_data
31
- assert "viewer_type" in response_data
32
- assert "geode_object_type" in response_data
33
-
34
- assert response_data["name"] == point_data["name"]
35
- assert response_data["viewer_type"] == "mesh"
36
- assert response_data["geode_object_type"] == "PointSet3D"
37
-
38
- # Test with missing parameters
39
- test_utils.test_route_wrong_params(client, route, lambda: point_data.copy())
40
-
41
-
42
- def test_create_point_with_invalid_data(client: FlaskClient) -> None:
43
- """Test the point creation endpoint with invalid data."""
44
- route: str = "/opengeodeweb_back/create/point"
45
-
46
- # Test with non-numeric coordinates
47
- invalid_data: test_utils.JsonData = {
48
- "name": "invalid_point",
49
- "x": "not_a_number",
50
- "y": 2.0,
51
- "z": 3.0,
52
- }
53
- response = client.post(route, json=invalid_data)
54
- assert response.status_code == 400
55
-
56
- # Test with missing coordinates
57
- invalid_data = {"name": "invalid_point", "y": 2.0, "z": 3.0}
58
- response = client.post(route, json=invalid_data)
59
- assert response.status_code == 400