OpenGeodeWeb-Back 6.7.1__tar.gz → 6.8.0rc1__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 (105) hide show
  1. {opengeodeweb_back-6.7.1/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-6.8.0rc1}/PKG-INFO +1 -1
  2. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/pyproject.toml +1 -1
  3. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +1 -1
  4. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +2 -0
  5. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/create/blueprint_create.py +31 -0
  6. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/create/schemas/__init__.py +1 -0
  7. opengeodeweb_back-6.8.0rc1/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.json +37 -0
  8. opengeodeweb_back-6.8.0rc1/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.py +23 -0
  9. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/tests/test_create_routes.py +43 -0
  10. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/LICENSE +0 -0
  11. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/README.md +0 -0
  12. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/requirements.txt +0 -0
  13. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/setup.cfg +0 -0
  14. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  15. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
  16. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -0
  17. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  18. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/__init__.py +0 -0
  19. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/app.py +0 -0
  20. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/app_config.py +0 -0
  21. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_functions.py +0 -0
  22. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/__init__.py +0 -0
  23. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_brep.py +0 -0
  24. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +0 -0
  25. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
  26. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
  27. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
  28. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
  29. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
  30. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
  31. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
  32. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
  33. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
  34. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
  35. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
  36. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_model.py +0 -0
  37. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
  38. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
  39. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
  40. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
  41. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
  42. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
  43. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
  44. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
  45. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
  46. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
  47. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_section.py +0 -0
  48. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
  49. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +0 -0
  50. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
  51. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
  52. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
  53. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
  54. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
  55. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
  56. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/py.typed +0 -0
  57. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/blueprint_routes.py +0 -0
  58. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.json +0 -0
  59. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.py +0 -0
  60. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/create/schemas/point_set.json +0 -0
  61. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/create/schemas/point_set.py +0 -0
  62. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/__init__.py +0 -0
  63. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  64. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
  65. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  66. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
  67. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -0
  68. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -0
  69. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -0
  70. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -0
  71. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
  72. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
  73. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json +0 -0
  74. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py +0 -0
  75. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  76. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
  77. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  78. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +0 -0
  79. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
  80. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
  81. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
  82. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/inspect_file.py +0 -0
  83. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
  84. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
  85. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  86. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/missing_files.py +0 -0
  87. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  88. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
  89. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  90. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -0
  91. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  92. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -0
  93. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  94. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
  95. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  96. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
  97. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  98. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
  99. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  100. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -0
  101. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/test_utils.py +0 -0
  102. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/src/opengeodeweb_back/utils_functions.py +0 -0
  103. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/tests/test_geode_functions.py +0 -0
  104. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/tests/test_routes.py +0 -0
  105. {opengeodeweb_back-6.7.1 → opengeodeweb_back-6.8.0rc1}/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.7.1
3
+ Version: 6.8.0rc1
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "OpenGeodeWeb-Back"
7
- version = "6.7.1"
7
+ version = "6.8.0-rc.1"
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"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.7.1
3
+ Version: 6.8.0rc1
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
@@ -56,6 +56,8 @@ src/opengeodeweb_back/routes/create/schemas/edged_curve.json
56
56
  src/opengeodeweb_back/routes/create/schemas/edged_curve.py
57
57
  src/opengeodeweb_back/routes/create/schemas/point_set.json
58
58
  src/opengeodeweb_back/routes/create/schemas/point_set.py
59
+ src/opengeodeweb_back/routes/create/schemas/polygonal_surface.json
60
+ src/opengeodeweb_back/routes/create/schemas/polygonal_surface.py
59
61
  src/opengeodeweb_back/routes/schemas/__init__.py
60
62
  src/opengeodeweb_back/routes/schemas/allowed_files.json
61
63
  src/opengeodeweb_back/routes/schemas/allowed_files.py
@@ -11,6 +11,9 @@ from opengeodeweb_back import geode_functions, utils_functions
11
11
  import opengeodeweb_back.routes.create.schemas as schemas
12
12
  from opengeodeweb_back.geode_objects.geode_point_set3d import GeodePointSet3D
13
13
  from opengeodeweb_back.geode_objects.geode_edged_curve3d import GeodeEdgedCurve3D
14
+ from opengeodeweb_back.geode_objects.geode_polygonal_surface3d import (
15
+ GeodePolygonalSurface3D,
16
+ )
14
17
 
15
18
  routes = flask.Blueprint("create", __name__, url_prefix="/create")
16
19
  schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
@@ -62,3 +65,31 @@ def edged_curve() -> flask.Response:
62
65
  edged_curve_obj
63
66
  )
64
67
  return flask.make_response(result, 200)
68
+
69
+
70
+ @routes.route(
71
+ schemas_dict["polygonal_surface"]["route"],
72
+ methods=schemas_dict["polygonal_surface"]["methods"],
73
+ )
74
+ def polygonal_surface() -> flask.Response:
75
+ """Endpoint to create a polygonal surface in 3D space."""
76
+ json_data = utils_functions.validate_request(
77
+ flask.request, schemas_dict["polygonal_surface"]
78
+ )
79
+ params = schemas.PolygonalSurface.from_dict(json_data)
80
+
81
+ polygonal_surface_obj = GeodePolygonalSurface3D()
82
+ builder = polygonal_surface_obj.builder()
83
+ builder.set_name(params.name)
84
+ for point in params.points:
85
+ builder.create_point(opengeode.Point3D([point.x, point.y, point.z]))
86
+
87
+ for polygon in params.polygons:
88
+ builder.create_polygon(polygon)
89
+
90
+ builder.compute_polygon_adjacencies()
91
+
92
+ result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
93
+ polygonal_surface_obj
94
+ )
95
+ return flask.make_response(result, 200)
@@ -1,2 +1,3 @@
1
+ from .polygonal_surface import *
1
2
  from .point_set import *
2
3
  from .edged_curve import *
@@ -0,0 +1,37 @@
1
+ {
2
+ "route": "/polygonal_surface",
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": "PolygonalSurfacePoint",
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": 3
24
+ },
25
+ "polygons": {
26
+ "type": "array",
27
+ "items": {
28
+ "type": "array",
29
+ "items": { "type": "integer" },
30
+ "minItems": 3
31
+ },
32
+ "minItems": 1
33
+ }
34
+ },
35
+ "required": ["name", "points", "polygons"],
36
+ "additionalProperties": false
37
+ }
@@ -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 PolygonalSurfacePoint(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 PolygonalSurface(DataClassJsonMixin):
18
+ def __post_init__(self) -> None:
19
+ print(self, flush=True)
20
+
21
+ name: str
22
+ points: List[PolygonalSurfacePoint]
23
+ polygons: List[List[int]]
@@ -23,6 +23,20 @@ def curve_data() -> test_utils.JsonData:
23
23
  }
24
24
 
25
25
 
26
+ @pytest.fixture
27
+ def surface_data() -> test_utils.JsonData:
28
+ return {
29
+ "name": "test_surface",
30
+ "points": [
31
+ {"x": 0.0, "y": 0.0, "z": 0.0},
32
+ {"x": 1.0, "y": 0.0, "z": 0.0},
33
+ {"x": 1.0, "y": 1.0, "z": 0.0},
34
+ {"x": 0.0, "y": 1.0, "z": 0.0},
35
+ ],
36
+ "polygons": [[0, 1, 2, 3]],
37
+ }
38
+
39
+
26
40
  def test_create_point(client: FlaskClient, point_data: test_utils.JsonData) -> None:
27
41
  """Test the creation of a point with valid data."""
28
42
  route: str = "/opengeodeweb_back/create/point_set"
@@ -108,3 +122,32 @@ def test_create_curve(client: FlaskClient, curve_data: test_utils.JsonData) -> N
108
122
 
109
123
  # Test with missing parameters
110
124
  test_utils.test_route_wrong_params(client, route, lambda: copy.deepcopy(curve_data))
125
+
126
+
127
+ def test_create_polygonal_surface(
128
+ client: FlaskClient, surface_data: test_utils.JsonData
129
+ ) -> None:
130
+ """Test the creation of a polygonal surface with valid data."""
131
+ route: str = "/opengeodeweb_back/create/polygonal_surface"
132
+
133
+ # Test with all required data
134
+ response = client.post(route, json=surface_data)
135
+ assert response.status_code == 200
136
+
137
+ # Verify response data
138
+ response_data = response.get_json()
139
+ assert "viewable_file" in response_data
140
+ assert "id" in response_data
141
+ assert "name" in response_data
142
+ assert "native_file" in response_data
143
+ assert "viewer_type" in response_data
144
+ assert "geode_object_type" in response_data
145
+
146
+ assert response_data["name"] == surface_data["name"]
147
+ assert response_data["viewer_type"] == "mesh"
148
+ assert response_data["geode_object_type"] == "PolygonalSurface3D"
149
+
150
+ # Test with missing parameters
151
+ test_utils.test_route_wrong_params(
152
+ client, route, lambda: copy.deepcopy(surface_data)
153
+ )