OpenGeodeWeb-Back 6.17.0rc2__tar.gz → 6.17.0rc3__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.
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/PKG-INFO +1 -1
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/pyproject.toml +1 -1
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/OpenGeodeWeb_Back.egg-info/PKG-INFO +1 -1
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +4 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/blueprint_routes.py +20 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/create/blueprint_create.py +22 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/create/schemas/__init__.py +1 -0
- opengeodeweb_back-6.17.0rc3/src/opengeodeweb_back/routes/create/schemas/horizon_stack.json +192 -0
- opengeodeweb_back-6.17.0rc3/src/opengeodeweb_back/routes/create/schemas/horizon_stack.py +82 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/__init__.py +1 -0
- opengeodeweb_back-6.17.0rc3/src/opengeodeweb_back/routes/schemas/horizon_stack_info.json +70 -0
- opengeodeweb_back-6.17.0rc3/src/opengeodeweb_back/routes/schemas/horizon_stack_info.py +50 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/tests/test_create_routes.py +72 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/LICENSE +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/README.md +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/requirements.txt +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/setup.cfg +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/app.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/app_config.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/basemap/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/basemap/basemap_mesh.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/basemap/basemap_providers.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/basemap/basemap_tiles.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/crs/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/crs/crs_alignment.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/crs/crs_assignment.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/crs/crs_functions.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_functions.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/crs_coordinates.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_brep.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_horizon_stack3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_model.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_section.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/py.typed +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/basemap/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/basemap/blueprint_basemap.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/basemap/schemas/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/basemap/schemas/build.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/basemap/schemas/build.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/basemap/schemas/delete.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/basemap/schemas/delete.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/create/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/create/schemas/edged_curve.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/create/schemas/edged_curve.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/create/schemas/point_set.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/create/schemas/point_set.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/blueprint_crs.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/__init__.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/active.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/active.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/align.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/align.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/assign_geographic.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/assign_geographic.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/convert_geographic.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/convert_geographic.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/geographic_list.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/crs/schemas/geographic_list.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/apply_time_series.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/apply_time_series.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/cell_attribute_range.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/cell_attribute_range.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/data_missing_files.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/data_missing_files.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/edge_attribute_range.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/edge_attribute_range.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_range.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_range.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_range.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_range.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_range.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_range.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_range.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_range.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/polygon_attribute_range.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/polygon_attribute_range.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_range.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_range.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/time_series_allowed_objects.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/time_series_allowed_objects.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/time_series_missing_files.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/time_series_missing_files.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/validate.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/validate.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/vertex_attribute_range.json +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/routes/schemas/vertex_attribute_range.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/test_utils.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/typed_route.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/utils_functions.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/tests/test_basemap.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/tests/test_crs_routes.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/tests/test_events.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/tests/test_geode_functions.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/tests/test_routes.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/tests/test_typed_routes.py +0 -0
- {opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/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.17.
|
|
3
|
+
Version: 6.17.0rc3
|
|
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.17.0-rc.
|
|
7
|
+
version = "6.17.0-rc.3"
|
|
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"
|
{opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/OpenGeodeWeb_Back.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OpenGeodeWeb-Back
|
|
3
|
-
Version: 6.17.
|
|
3
|
+
Version: 6.17.0rc3
|
|
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
|
|
@@ -74,6 +74,8 @@ src/opengeodeweb_back/routes/create/blueprint_create.py
|
|
|
74
74
|
src/opengeodeweb_back/routes/create/schemas/__init__.py
|
|
75
75
|
src/opengeodeweb_back/routes/create/schemas/edged_curve.json
|
|
76
76
|
src/opengeodeweb_back/routes/create/schemas/edged_curve.py
|
|
77
|
+
src/opengeodeweb_back/routes/create/schemas/horizon_stack.json
|
|
78
|
+
src/opengeodeweb_back/routes/create/schemas/horizon_stack.py
|
|
77
79
|
src/opengeodeweb_back/routes/create/schemas/point_set.json
|
|
78
80
|
src/opengeodeweb_back/routes/create/schemas/point_set.py
|
|
79
81
|
src/opengeodeweb_back/routes/create/schemas/polygonal_surface.json
|
|
@@ -114,6 +116,8 @@ src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json
|
|
|
114
116
|
src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py
|
|
115
117
|
src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json
|
|
116
118
|
src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py
|
|
119
|
+
src/opengeodeweb_back/routes/schemas/horizon_stack_info.json
|
|
120
|
+
src/opengeodeweb_back/routes/schemas/horizon_stack_info.py
|
|
117
121
|
src/opengeodeweb_back/routes/schemas/import_project.json
|
|
118
122
|
src/opengeodeweb_back/routes/schemas/import_project.py
|
|
119
123
|
src/opengeodeweb_back/routes/schemas/kill.json
|
|
@@ -35,6 +35,7 @@ from opengeodeweb_back.geode_objects.geode_brep import GeodeBRep
|
|
|
35
35
|
from opengeodeweb_back.geode_objects.geode_graph import GeodeGraph
|
|
36
36
|
from opengeodeweb_back.geode_objects.geode_grid2d import GeodeGrid2D
|
|
37
37
|
from opengeodeweb_back.geode_objects.geode_grid3d import GeodeGrid3D
|
|
38
|
+
from opengeodeweb_back.geode_objects.geode_horizon_stack3d import GeodeHorizonStack3D
|
|
38
39
|
from opengeodeweb_back.geode_objects.geode_mesh import GeodeMesh
|
|
39
40
|
from opengeodeweb_back.geode_objects.geode_model import GeodeModel
|
|
40
41
|
from opengeodeweb_back.geode_objects.geode_solid_mesh3d import GeodeSolidMesh3D
|
|
@@ -772,6 +773,25 @@ def model_component_polyhedron_attribute_range(
|
|
|
772
773
|
)
|
|
773
774
|
|
|
774
775
|
|
|
776
|
+
@typed_route(routes, schemas.horizon_stack_info_route)
|
|
777
|
+
def horizon_stack_info(params: schemas.HorizonStackInfo) -> schemas.HorizonStackInfoResponse:
|
|
778
|
+
"""Horizons and stratigraphic units of a horizon stack, top to bottom."""
|
|
779
|
+
geode_object = geode_functions.load_geode_object(params.id)
|
|
780
|
+
if not isinstance(geode_object, GeodeHorizonStack3D):
|
|
781
|
+
flask.abort(400, f"{params.id} is not a HorizonStack3D")
|
|
782
|
+
stack = geode_object.horizon_stack
|
|
783
|
+
return schemas.HorizonStackInfoResponse(
|
|
784
|
+
horizons=[
|
|
785
|
+
schemas.horizon_stack_info.Horizon(id=horizon.id().string(), name=horizon.name() or "")
|
|
786
|
+
for horizon in stack.top_to_bottom_horizons()
|
|
787
|
+
],
|
|
788
|
+
units=[
|
|
789
|
+
schemas.horizon_stack_info.Unit(id=unit.id().string(), name=unit.name() or "")
|
|
790
|
+
for unit in stack.top_to_bottom_units()
|
|
791
|
+
],
|
|
792
|
+
)
|
|
793
|
+
|
|
794
|
+
|
|
775
795
|
@typed_route(routes, schemas.ping_route)
|
|
776
796
|
def ping(_params: schemas.Ping) -> schemas.PingResponse:
|
|
777
797
|
flask.current_app.config.update(LAST_PING_TIME=time.time())
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
# Third party imports
|
|
4
4
|
import flask
|
|
5
5
|
import opengeode
|
|
6
|
+
import opengeode_geosciences
|
|
6
7
|
|
|
7
8
|
# Local application imports
|
|
8
9
|
from opengeodeweb_back import utils_functions
|
|
9
10
|
from opengeodeweb_back.geode_objects.geode_edged_curve3d import GeodeEdgedCurve3D
|
|
11
|
+
from opengeodeweb_back.geode_objects.geode_horizon_stack3d import GeodeHorizonStack3D
|
|
10
12
|
from opengeodeweb_back.geode_objects.geode_point_set3d import GeodePointSet3D
|
|
11
13
|
from opengeodeweb_back.geode_objects.geode_polygonal_surface3d import (
|
|
12
14
|
GeodePolygonalSurface3D,
|
|
@@ -65,3 +67,23 @@ def polygonal_surface(
|
|
|
65
67
|
return schemas.PolygonalSurfaceResponse.from_dict(
|
|
66
68
|
utils_functions.generate_files_from_object(polygonal_surface_obj)
|
|
67
69
|
)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@typed_route(routes, schemas.horizon_stack_route)
|
|
73
|
+
def horizon_stack(params: schemas.HorizonStack) -> schemas.HorizonStackResponse:
|
|
74
|
+
"""Endpoint to create a horizon stack from its horizon and unit names, top to bottom."""
|
|
75
|
+
if len(params.unit_names) not in (0, len(params.horizons) + 1):
|
|
76
|
+
flask.abort(
|
|
77
|
+
400,
|
|
78
|
+
f"Expected {len(params.horizons) + 1} unit names for {len(params.horizons)} horizons,"
|
|
79
|
+
f" got {len(params.unit_names)}",
|
|
80
|
+
)
|
|
81
|
+
horizon_stack_obj = GeodeHorizonStack3D(
|
|
82
|
+
opengeode_geosciences.horizons_stack_from_top_to_bottom_names_3d(
|
|
83
|
+
params.horizons, params.unit_names
|
|
84
|
+
)
|
|
85
|
+
)
|
|
86
|
+
horizon_stack_obj.builder().set_name(params.name)
|
|
87
|
+
return schemas.HorizonStackResponse.from_dict(
|
|
88
|
+
utils_functions.generate_files_from_object(horizon_stack_obj)
|
|
89
|
+
)
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
{
|
|
2
|
+
"route": "/horizon_stack",
|
|
3
|
+
"methods": [
|
|
4
|
+
"POST"
|
|
5
|
+
],
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"name": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"minLength": 1
|
|
11
|
+
},
|
|
12
|
+
"horizons": {
|
|
13
|
+
"type": "array",
|
|
14
|
+
"items": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"minLength": 1
|
|
17
|
+
},
|
|
18
|
+
"minItems": 1,
|
|
19
|
+
"uniqueItems": true
|
|
20
|
+
},
|
|
21
|
+
"unit_names": {
|
|
22
|
+
"type": "array",
|
|
23
|
+
"items": {
|
|
24
|
+
"type": "string"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"required": [
|
|
29
|
+
"name",
|
|
30
|
+
"horizons",
|
|
31
|
+
"unit_names"
|
|
32
|
+
],
|
|
33
|
+
"additionalProperties": false,
|
|
34
|
+
"response": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"properties": {
|
|
37
|
+
"native_file": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
},
|
|
40
|
+
"id": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"minLength": 32,
|
|
43
|
+
"maxLength": 32
|
|
44
|
+
},
|
|
45
|
+
"name": {
|
|
46
|
+
"type": "string"
|
|
47
|
+
},
|
|
48
|
+
"viewer_type": {
|
|
49
|
+
"type": "string"
|
|
50
|
+
},
|
|
51
|
+
"is_viewable": {
|
|
52
|
+
"type": "boolean"
|
|
53
|
+
},
|
|
54
|
+
"geode_object_type": {
|
|
55
|
+
"type": "string"
|
|
56
|
+
},
|
|
57
|
+
"viewable_file": {
|
|
58
|
+
"type": "string"
|
|
59
|
+
},
|
|
60
|
+
"binary_light_viewable": {
|
|
61
|
+
"type": "string"
|
|
62
|
+
},
|
|
63
|
+
"nb_vertices": {
|
|
64
|
+
"type": "integer"
|
|
65
|
+
},
|
|
66
|
+
"mesh_components": {
|
|
67
|
+
"type": "array",
|
|
68
|
+
"items": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"properties": {
|
|
71
|
+
"viewer_id": {
|
|
72
|
+
"type": "integer"
|
|
73
|
+
},
|
|
74
|
+
"geode_id": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"minLength": 36,
|
|
77
|
+
"maxLength": 36
|
|
78
|
+
},
|
|
79
|
+
"name": {
|
|
80
|
+
"type": "string"
|
|
81
|
+
},
|
|
82
|
+
"type": {
|
|
83
|
+
"type": "string"
|
|
84
|
+
},
|
|
85
|
+
"boundaries": {
|
|
86
|
+
"type": "array",
|
|
87
|
+
"items": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"minLength": 36,
|
|
90
|
+
"maxLength": 36
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"internals": {
|
|
94
|
+
"type": "array",
|
|
95
|
+
"items": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"minLength": 36,
|
|
98
|
+
"maxLength": 36
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"is_active": {
|
|
102
|
+
"type": "boolean"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"required": [
|
|
106
|
+
"viewer_id",
|
|
107
|
+
"geode_id",
|
|
108
|
+
"name",
|
|
109
|
+
"type",
|
|
110
|
+
"boundaries",
|
|
111
|
+
"internals",
|
|
112
|
+
"is_active"
|
|
113
|
+
],
|
|
114
|
+
"additionalProperties": false
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"collection_components": {
|
|
118
|
+
"type": "array",
|
|
119
|
+
"items": {
|
|
120
|
+
"type": "object",
|
|
121
|
+
"properties": {
|
|
122
|
+
"geode_id": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"minLength": 36,
|
|
125
|
+
"maxLength": 36
|
|
126
|
+
},
|
|
127
|
+
"name": {
|
|
128
|
+
"type": "string"
|
|
129
|
+
},
|
|
130
|
+
"type": {
|
|
131
|
+
"type": "string"
|
|
132
|
+
},
|
|
133
|
+
"items": {
|
|
134
|
+
"type": "array",
|
|
135
|
+
"items": {
|
|
136
|
+
"type": "string",
|
|
137
|
+
"minLength": 36,
|
|
138
|
+
"maxLength": 36
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"is_active": {
|
|
142
|
+
"type": "boolean"
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"required": [
|
|
146
|
+
"geode_id",
|
|
147
|
+
"name",
|
|
148
|
+
"type",
|
|
149
|
+
"items",
|
|
150
|
+
"is_active"
|
|
151
|
+
],
|
|
152
|
+
"additionalProperties": false
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"geode_id": {
|
|
156
|
+
"type": "string",
|
|
157
|
+
"minLength": 36,
|
|
158
|
+
"maxLength": 36
|
|
159
|
+
},
|
|
160
|
+
"crs": {
|
|
161
|
+
"type": "object",
|
|
162
|
+
"properties": {
|
|
163
|
+
"authority": {
|
|
164
|
+
"type": "string"
|
|
165
|
+
},
|
|
166
|
+
"code": {
|
|
167
|
+
"type": "string"
|
|
168
|
+
},
|
|
169
|
+
"name": {
|
|
170
|
+
"type": "string"
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"required": [
|
|
174
|
+
"authority",
|
|
175
|
+
"code",
|
|
176
|
+
"name"
|
|
177
|
+
],
|
|
178
|
+
"additionalProperties": false
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"required": [
|
|
182
|
+
"native_file",
|
|
183
|
+
"id",
|
|
184
|
+
"name",
|
|
185
|
+
"viewer_type",
|
|
186
|
+
"is_viewable",
|
|
187
|
+
"geode_object_type",
|
|
188
|
+
"geode_id"
|
|
189
|
+
],
|
|
190
|
+
"additionalProperties": false
|
|
191
|
+
}
|
|
192
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from opengeodeweb_microservice.schemas import Route, load_schema
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from dataclasses_json import DataClassJsonMixin
|
|
5
|
+
from opengeodeweb_microservice.schemas import print_dataclass
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from typing import List
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class HorizonStack(DataClassJsonMixin):
|
|
12
|
+
def __post_init__(self) -> None:
|
|
13
|
+
print_dataclass(self)
|
|
14
|
+
|
|
15
|
+
horizons: List[str]
|
|
16
|
+
name: str
|
|
17
|
+
unit_names: List[str]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass
|
|
21
|
+
class CollectionComponent(DataClassJsonMixin):
|
|
22
|
+
def __post_init__(self) -> None:
|
|
23
|
+
print_dataclass(self)
|
|
24
|
+
|
|
25
|
+
geode_id: str
|
|
26
|
+
is_active: bool
|
|
27
|
+
items: List[str]
|
|
28
|
+
name: str
|
|
29
|
+
type: str
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclass
|
|
33
|
+
class CRS(DataClassJsonMixin):
|
|
34
|
+
def __post_init__(self) -> None:
|
|
35
|
+
print_dataclass(self)
|
|
36
|
+
|
|
37
|
+
authority: str
|
|
38
|
+
code: str
|
|
39
|
+
name: str
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@dataclass
|
|
43
|
+
class MeshComponent(DataClassJsonMixin):
|
|
44
|
+
def __post_init__(self) -> None:
|
|
45
|
+
print_dataclass(self)
|
|
46
|
+
|
|
47
|
+
boundaries: List[str]
|
|
48
|
+
geode_id: str
|
|
49
|
+
internals: List[str]
|
|
50
|
+
is_active: bool
|
|
51
|
+
name: str
|
|
52
|
+
type: str
|
|
53
|
+
viewer_id: int
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@dataclass
|
|
57
|
+
class HorizonStackResponse(DataClassJsonMixin):
|
|
58
|
+
def __post_init__(self) -> None:
|
|
59
|
+
print_dataclass(self)
|
|
60
|
+
|
|
61
|
+
geode_id: str
|
|
62
|
+
geode_object_type: str
|
|
63
|
+
id: str
|
|
64
|
+
is_viewable: bool
|
|
65
|
+
name: str
|
|
66
|
+
native_file: str
|
|
67
|
+
viewer_type: str
|
|
68
|
+
binary_light_viewable: Optional[str] = None
|
|
69
|
+
collection_components: Optional[List[CollectionComponent]] = None
|
|
70
|
+
crs: Optional[CRS] = None
|
|
71
|
+
mesh_components: Optional[List[MeshComponent]] = None
|
|
72
|
+
nb_vertices: Optional[int] = None
|
|
73
|
+
viewable_file: Optional[str] = None
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
horizon_stack_route = Route(
|
|
77
|
+
schema=load_schema(Path(__file__)),
|
|
78
|
+
params=HorizonStack,
|
|
79
|
+
response=HorizonStackResponse,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
__all__ = ["HorizonStack", "HorizonStackResponse", "horizon_stack_route"]
|
|
@@ -21,6 +21,7 @@ from .model_component_edge_attribute_range import *
|
|
|
21
21
|
from .model_component_edge_attribute_names import *
|
|
22
22
|
from .kill import *
|
|
23
23
|
from .import_project import *
|
|
24
|
+
from .horizon_stack_info import *
|
|
24
25
|
from .geode_objects_and_output_extensions import *
|
|
25
26
|
from .geode_object_inheritance import *
|
|
26
27
|
from .export_project import *
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"route": "/horizon_stack_info",
|
|
3
|
+
"methods": [
|
|
4
|
+
"POST"
|
|
5
|
+
],
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"id": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"minLength": 32,
|
|
11
|
+
"maxLength": 32
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"required": [
|
|
15
|
+
"id"
|
|
16
|
+
],
|
|
17
|
+
"additionalProperties": false,
|
|
18
|
+
"response": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"properties": {
|
|
21
|
+
"horizons": {
|
|
22
|
+
"type": "array",
|
|
23
|
+
"items": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"properties": {
|
|
26
|
+
"id": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"minLength": 36,
|
|
29
|
+
"maxLength": 36
|
|
30
|
+
},
|
|
31
|
+
"name": {
|
|
32
|
+
"type": "string"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"required": [
|
|
36
|
+
"id",
|
|
37
|
+
"name"
|
|
38
|
+
],
|
|
39
|
+
"additionalProperties": false
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"units": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"items": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"properties": {
|
|
47
|
+
"id": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"minLength": 36,
|
|
50
|
+
"maxLength": 36
|
|
51
|
+
},
|
|
52
|
+
"name": {
|
|
53
|
+
"type": "string"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"required": [
|
|
57
|
+
"id",
|
|
58
|
+
"name"
|
|
59
|
+
],
|
|
60
|
+
"additionalProperties": false
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"required": [
|
|
65
|
+
"horizons",
|
|
66
|
+
"units"
|
|
67
|
+
],
|
|
68
|
+
"additionalProperties": false
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from opengeodeweb_microservice.schemas import Route, load_schema
|
|
3
|
+
from typing import List
|
|
4
|
+
from dataclasses_json import DataClassJsonMixin
|
|
5
|
+
from opengeodeweb_microservice.schemas import print_dataclass
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class HorizonStackInfo(DataClassJsonMixin):
|
|
11
|
+
def __post_init__(self) -> None:
|
|
12
|
+
print_dataclass(self)
|
|
13
|
+
|
|
14
|
+
id: str
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class Horizon(DataClassJsonMixin):
|
|
19
|
+
def __post_init__(self) -> None:
|
|
20
|
+
print_dataclass(self)
|
|
21
|
+
|
|
22
|
+
id: str
|
|
23
|
+
name: str
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@dataclass
|
|
27
|
+
class Unit(DataClassJsonMixin):
|
|
28
|
+
def __post_init__(self) -> None:
|
|
29
|
+
print_dataclass(self)
|
|
30
|
+
|
|
31
|
+
id: str
|
|
32
|
+
name: str
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@dataclass
|
|
36
|
+
class HorizonStackInfoResponse(DataClassJsonMixin):
|
|
37
|
+
def __post_init__(self) -> None:
|
|
38
|
+
print_dataclass(self)
|
|
39
|
+
|
|
40
|
+
horizons: List[Horizon]
|
|
41
|
+
units: List[Unit]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
horizon_stack_info_route = Route(
|
|
45
|
+
schema=load_schema(Path(__file__)),
|
|
46
|
+
params=HorizonStackInfo,
|
|
47
|
+
response=HorizonStackInfoResponse,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
__all__ = ["HorizonStackInfo", "HorizonStackInfoResponse", "horizon_stack_info_route"]
|
|
@@ -152,3 +152,75 @@ def test_create_polygonal_surface(client: FlaskClient, surface_data: test_utils.
|
|
|
152
152
|
|
|
153
153
|
# Test with missing parameters
|
|
154
154
|
test_utils.test_route_wrong_params(client, route, lambda: copy.deepcopy(surface_data))
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
@pytest.fixture
|
|
158
|
+
def horizon_stack_data() -> test_utils.JsonData:
|
|
159
|
+
return {
|
|
160
|
+
"name": "test_horizon_stack",
|
|
161
|
+
"horizons": ["Top", "Middle", "Bottom"],
|
|
162
|
+
"unit_names": ["Above", "Upper", "Lower", "Below"],
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def test_create_horizon_stack(client: FlaskClient, horizon_stack_data: test_utils.JsonData) -> None:
|
|
167
|
+
"""Test the creation of a horizon stack from scratch, then read it back top to bottom."""
|
|
168
|
+
route: str = "/opengeodeweb_back/create/horizon_stack"
|
|
169
|
+
|
|
170
|
+
response = client.post(route, json=horizon_stack_data)
|
|
171
|
+
assert response.status_code == 200
|
|
172
|
+
|
|
173
|
+
response_data = response.get_json()
|
|
174
|
+
assert response_data["name"] == horizon_stack_data["name"]
|
|
175
|
+
assert response_data["geode_object_type"] == "HorizonStack3D"
|
|
176
|
+
assert response_data["is_viewable"] is False
|
|
177
|
+
|
|
178
|
+
info = client.post("/opengeodeweb_back/horizon_stack_info", json={"id": response_data["id"]})
|
|
179
|
+
assert info.status_code == 200
|
|
180
|
+
info_data = info.get_json()
|
|
181
|
+
assert [horizon["name"] for horizon in info_data["horizons"]] == horizon_stack_data["horizons"]
|
|
182
|
+
assert [unit["name"] for unit in info_data["units"]] == horizon_stack_data["unit_names"]
|
|
183
|
+
|
|
184
|
+
test_utils.test_route_wrong_params(client, route, lambda: copy.deepcopy(horizon_stack_data))
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def test_create_horizon_stack_without_unit_names(client: FlaskClient) -> None:
|
|
188
|
+
"""Unit names are optional: an empty list creates unnamed units."""
|
|
189
|
+
route: str = "/opengeodeweb_back/create/horizon_stack"
|
|
190
|
+
response = client.post(route, json={"name": "stack", "horizons": ["H1"], "unit_names": []})
|
|
191
|
+
assert response.status_code == 200
|
|
192
|
+
|
|
193
|
+
info = client.post(
|
|
194
|
+
"/opengeodeweb_back/horizon_stack_info", json={"id": response.get_json()["id"]}
|
|
195
|
+
)
|
|
196
|
+
assert info.status_code == 200
|
|
197
|
+
assert len(info.get_json()["units"]) == 2
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def test_create_horizon_stack_wrong_unit_count(client: FlaskClient) -> None:
|
|
201
|
+
"""There must be one more unit than horizons."""
|
|
202
|
+
route: str = "/opengeodeweb_back/create/horizon_stack"
|
|
203
|
+
response = client.post(
|
|
204
|
+
route, json={"name": "stack", "horizons": ["H1", "H2"], "unit_names": ["U1", "U2"]}
|
|
205
|
+
)
|
|
206
|
+
assert response.status_code == 400
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def test_create_horizon_stack_duplicate_horizons(client: FlaskClient) -> None:
|
|
210
|
+
"""Horizon names must be unique."""
|
|
211
|
+
route: str = "/opengeodeweb_back/create/horizon_stack"
|
|
212
|
+
response = client.post(
|
|
213
|
+
route, json={"name": "stack", "horizons": ["H1", "H1"], "unit_names": []}
|
|
214
|
+
)
|
|
215
|
+
assert response.status_code == 400
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def test_horizon_stack_info_wrong_type(
|
|
219
|
+
client: FlaskClient, point_data: test_utils.JsonData
|
|
220
|
+
) -> None:
|
|
221
|
+
"""Reading the horizon stack of another object is a client error."""
|
|
222
|
+
point_set = client.post("/opengeodeweb_back/create/point_set", json=point_data)
|
|
223
|
+
info = client.post(
|
|
224
|
+
"/opengeodeweb_back/horizon_stack_info", json={"id": point_set.get_json()["id"]}
|
|
225
|
+
)
|
|
226
|
+
assert info.status_code == 400
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/app_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/crs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengeodeweb_back-6.17.0rc2 → opengeodeweb_back-6.17.0rc3}/src/opengeodeweb_back/geode_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|