OpenGeodeWeb-Back 5.10.5rc1__tar.gz → 5.11.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.
Potentially problematic release.
This version of OpenGeodeWeb-Back might be problematic. Click here for more details.
- {opengeodeweb_back-5.10.5rc1/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-5.11.0rc1}/PKG-INFO +9 -9
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/pyproject.toml +2 -1
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/requirements.txt +8 -8
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +9 -9
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +4 -1
- opengeodeweb_back-5.11.0rc1/src/OpenGeodeWeb_Back.egg-info/requires.txt +17 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/app.py +11 -10
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/blueprint_routes.py +2 -26
- opengeodeweb_back-5.11.0rc1/src/opengeodeweb_back/routes/create/blueprint_create.py +117 -0
- opengeodeweb_back-5.11.0rc1/src/opengeodeweb_back/routes/create/schemas/create_aoi.json +46 -0
- opengeodeweb_back-5.11.0rc1/src/opengeodeweb_back/routes/create/schemas/create_point.json +29 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/utils_functions.py +1 -0
- opengeodeweb_back-5.11.0rc1/tests/test_create_routes.py +210 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/tests/test_routes.py +0 -16
- opengeodeweb_back-5.10.5rc1/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -17
- opengeodeweb_back-5.10.5rc1/src/opengeodeweb_back/routes/schemas/create_point.json +0 -29
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/LICENSE +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/README.md +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/setup.cfg +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/__init__.py +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/app_config.py +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/geode_functions.py +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/geode_objects.py +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/py.typed +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/models/blueprint_models.py +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/models/schemas/mesh_components.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/models/schemas/vtm_component_indices.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/test_utils.py +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/tests/test_geode_functions.py +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/tests/test_models_routes.py +0 -0
- {opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/tests/test_utils_functions.py +0 -0
{opengeodeweb_back-5.10.5rc1/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-5.11.0rc1}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OpenGeodeWeb-Back
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.11.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
|
|
@@ -16,18 +16,18 @@ Requires-Dist: blinker>=1
|
|
|
16
16
|
Requires-Dist: click>=8
|
|
17
17
|
Requires-Dist: flask[async]>=3
|
|
18
18
|
Requires-Dist: flask-cors==6.0.1
|
|
19
|
-
Requires-Dist: geode-common==33.11.
|
|
20
|
-
Requires-Dist: geode-viewables==3.3.
|
|
19
|
+
Requires-Dist: geode-common==33.11.3
|
|
20
|
+
Requires-Dist: geode-viewables==3.3.2
|
|
21
21
|
Requires-Dist: itsdangerous>=2
|
|
22
22
|
Requires-Dist: jinja2>=3
|
|
23
23
|
Requires-Dist: markupsafe>=3
|
|
24
|
-
Requires-Dist: opengeode-core==15.
|
|
25
|
-
Requires-Dist: opengeode-geosciences==9.
|
|
26
|
-
Requires-Dist: opengeode-geosciencesio==5.8.
|
|
27
|
-
Requires-Dist: opengeode-inspector==6.8.
|
|
28
|
-
Requires-Dist: opengeode-io==7.4.
|
|
24
|
+
Requires-Dist: opengeode-core==15.29.2
|
|
25
|
+
Requires-Dist: opengeode-geosciences==9.5.0
|
|
26
|
+
Requires-Dist: opengeode-geosciencesio==5.8.1
|
|
27
|
+
Requires-Dist: opengeode-inspector==6.8.2
|
|
28
|
+
Requires-Dist: opengeode-io==7.4.2
|
|
29
29
|
Requires-Dist: werkzeug==3.1.2
|
|
30
|
-
Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.
|
|
30
|
+
Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.5
|
|
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 = "5.
|
|
7
|
+
version = "5.11.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"
|
|
@@ -32,4 +32,5 @@ where = ["src"]
|
|
|
32
32
|
[tool.setuptools.package-data]
|
|
33
33
|
"opengeodeweb_back.routes.schemas" = ["*.json"]
|
|
34
34
|
"opengeodeweb_back.routes.models.schemas" = ["*.json"]
|
|
35
|
+
"opengeodeweb_back.routes.create.schemas" = ["*.json"]
|
|
35
36
|
opengeodeweb_microservice = ["py.typed"]
|
|
@@ -16,11 +16,11 @@ flask[async]>=3
|
|
|
16
16
|
# flask-cors
|
|
17
17
|
flask-cors==6.0.1
|
|
18
18
|
# via -r requirements.in
|
|
19
|
-
geode-common==33.11.
|
|
19
|
+
geode-common==33.11.3
|
|
20
20
|
# via
|
|
21
21
|
# -r requirements.in
|
|
22
22
|
# geode-viewables
|
|
23
|
-
geode-viewables==3.3.
|
|
23
|
+
geode-viewables==3.3.2
|
|
24
24
|
# via -r requirements.in
|
|
25
25
|
itsdangerous>=2
|
|
26
26
|
# via flask
|
|
@@ -31,7 +31,7 @@ markupsafe>=3
|
|
|
31
31
|
# flask
|
|
32
32
|
# jinja2
|
|
33
33
|
# werkzeug
|
|
34
|
-
opengeode-core==15.
|
|
34
|
+
opengeode-core==15.29.2
|
|
35
35
|
# via
|
|
36
36
|
# -r requirements.in
|
|
37
37
|
# geode-common
|
|
@@ -40,16 +40,16 @@ opengeode-core==15.27.4
|
|
|
40
40
|
# opengeode-geosciencesio
|
|
41
41
|
# opengeode-inspector
|
|
42
42
|
# opengeode-io
|
|
43
|
-
opengeode-geosciences==9.
|
|
43
|
+
opengeode-geosciences==9.5.0
|
|
44
44
|
# via
|
|
45
45
|
# -r requirements.in
|
|
46
46
|
# geode-viewables
|
|
47
47
|
# opengeode-geosciencesio
|
|
48
|
-
opengeode-geosciencesio==5.8.
|
|
48
|
+
opengeode-geosciencesio==5.8.1
|
|
49
49
|
# via -r requirements.in
|
|
50
|
-
opengeode-inspector==6.8.
|
|
50
|
+
opengeode-inspector==6.8.2
|
|
51
51
|
# via -r requirements.in
|
|
52
|
-
opengeode-io==7.4.
|
|
52
|
+
opengeode-io==7.4.2
|
|
53
53
|
# via
|
|
54
54
|
# -r requirements.in
|
|
55
55
|
# geode-viewables
|
|
@@ -60,4 +60,4 @@ werkzeug==3.1.2
|
|
|
60
60
|
# flask
|
|
61
61
|
# flask-cors
|
|
62
62
|
|
|
63
|
-
opengeodeweb-microservice==1.*,>=1.0.
|
|
63
|
+
opengeodeweb-microservice==1.*,>=1.0.5
|
{opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1/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: 5.
|
|
3
|
+
Version: 5.11.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
|
|
@@ -16,18 +16,18 @@ Requires-Dist: blinker>=1
|
|
|
16
16
|
Requires-Dist: click>=8
|
|
17
17
|
Requires-Dist: flask[async]>=3
|
|
18
18
|
Requires-Dist: flask-cors==6.0.1
|
|
19
|
-
Requires-Dist: geode-common==33.11.
|
|
20
|
-
Requires-Dist: geode-viewables==3.3.
|
|
19
|
+
Requires-Dist: geode-common==33.11.3
|
|
20
|
+
Requires-Dist: geode-viewables==3.3.2
|
|
21
21
|
Requires-Dist: itsdangerous>=2
|
|
22
22
|
Requires-Dist: jinja2>=3
|
|
23
23
|
Requires-Dist: markupsafe>=3
|
|
24
|
-
Requires-Dist: opengeode-core==15.
|
|
25
|
-
Requires-Dist: opengeode-geosciences==9.
|
|
26
|
-
Requires-Dist: opengeode-geosciencesio==5.8.
|
|
27
|
-
Requires-Dist: opengeode-inspector==6.8.
|
|
28
|
-
Requires-Dist: opengeode-io==7.4.
|
|
24
|
+
Requires-Dist: opengeode-core==15.29.2
|
|
25
|
+
Requires-Dist: opengeode-geosciences==9.5.0
|
|
26
|
+
Requires-Dist: opengeode-geosciencesio==5.8.1
|
|
27
|
+
Requires-Dist: opengeode-inspector==6.8.2
|
|
28
|
+
Requires-Dist: opengeode-io==7.4.2
|
|
29
29
|
Requires-Dist: werkzeug==3.1.2
|
|
30
|
-
Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.
|
|
30
|
+
Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.5
|
|
31
31
|
Dynamic: license-file
|
|
32
32
|
|
|
33
33
|
<h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
|
|
@@ -17,12 +17,14 @@ src/opengeodeweb_back/py.typed
|
|
|
17
17
|
src/opengeodeweb_back/test_utils.py
|
|
18
18
|
src/opengeodeweb_back/utils_functions.py
|
|
19
19
|
src/opengeodeweb_back/routes/blueprint_routes.py
|
|
20
|
+
src/opengeodeweb_back/routes/create/blueprint_create.py
|
|
21
|
+
src/opengeodeweb_back/routes/create/schemas/create_aoi.json
|
|
22
|
+
src/opengeodeweb_back/routes/create/schemas/create_point.json
|
|
20
23
|
src/opengeodeweb_back/routes/models/blueprint_models.py
|
|
21
24
|
src/opengeodeweb_back/routes/models/schemas/mesh_components.json
|
|
22
25
|
src/opengeodeweb_back/routes/models/schemas/vtm_component_indices.json
|
|
23
26
|
src/opengeodeweb_back/routes/schemas/allowed_files.json
|
|
24
27
|
src/opengeodeweb_back/routes/schemas/allowed_objects.json
|
|
25
|
-
src/opengeodeweb_back/routes/schemas/create_point.json
|
|
26
28
|
src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json
|
|
27
29
|
src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json
|
|
28
30
|
src/opengeodeweb_back/routes/schemas/inspect_file.json
|
|
@@ -35,6 +37,7 @@ src/opengeodeweb_back/routes/schemas/save_viewable_file.json
|
|
|
35
37
|
src/opengeodeweb_back/routes/schemas/texture_coordinates.json
|
|
36
38
|
src/opengeodeweb_back/routes/schemas/upload_file.json
|
|
37
39
|
src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json
|
|
40
|
+
tests/test_create_routes.py
|
|
38
41
|
tests/test_geode_functions.py
|
|
39
42
|
tests/test_models_routes.py
|
|
40
43
|
tests/test_routes.py
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
asgiref>=3
|
|
2
|
+
blinker>=1
|
|
3
|
+
click>=8
|
|
4
|
+
flask[async]>=3
|
|
5
|
+
flask-cors==6.0.1
|
|
6
|
+
geode-common==33.11.3
|
|
7
|
+
geode-viewables==3.3.2
|
|
8
|
+
itsdangerous>=2
|
|
9
|
+
jinja2>=3
|
|
10
|
+
markupsafe>=3
|
|
11
|
+
opengeode-core==15.29.2
|
|
12
|
+
opengeode-geosciences==9.5.0
|
|
13
|
+
opengeode-geosciencesio==5.8.1
|
|
14
|
+
opengeode-inspector==6.8.2
|
|
15
|
+
opengeode-io==7.4.2
|
|
16
|
+
werkzeug==3.1.2
|
|
17
|
+
opengeodeweb-microservice==1.*,>=1.0.5
|
|
@@ -4,30 +4,26 @@ import argparse
|
|
|
4
4
|
import os
|
|
5
5
|
import time
|
|
6
6
|
from typing import Any
|
|
7
|
-
|
|
8
7
|
import flask
|
|
9
8
|
import flask_cors # type: ignore
|
|
10
9
|
from flask import Flask, Response
|
|
11
10
|
from flask_cors import cross_origin
|
|
12
11
|
from werkzeug.exceptions import HTTPException
|
|
13
|
-
|
|
14
12
|
from opengeodeweb_back import utils_functions, app_config
|
|
15
13
|
from opengeodeweb_back.routes import blueprint_routes
|
|
16
14
|
from opengeodeweb_back.routes.models import blueprint_models
|
|
15
|
+
from opengeodeweb_back.routes.create import blueprint_create
|
|
17
16
|
from opengeodeweb_microservice.database import connection
|
|
18
17
|
|
|
19
|
-
|
|
20
18
|
""" Global config """
|
|
21
19
|
app: Flask = flask.Flask(__name__)
|
|
22
20
|
|
|
23
21
|
""" Config variables """
|
|
24
22
|
FLASK_DEBUG = True if os.environ.get("FLASK_DEBUG", default=None) == "True" else False
|
|
25
|
-
|
|
26
23
|
if FLASK_DEBUG == False:
|
|
27
24
|
app.config.from_object(app_config.ProdConfig)
|
|
28
25
|
else:
|
|
29
26
|
app.config.from_object(app_config.DevConfig)
|
|
30
|
-
|
|
31
27
|
DEFAULT_HOST: str = app.config.get("DEFAULT_HOST") or "localhost"
|
|
32
28
|
DEFAULT_PORT: int = int(app.config.get("DEFAULT_PORT") or 5000)
|
|
33
29
|
DEFAULT_DATA_FOLDER_PATH: str = app.config.get("DEFAULT_DATA_FOLDER_PATH") or "./data"
|
|
@@ -54,12 +50,16 @@ app.register_blueprint(
|
|
|
54
50
|
url_prefix="/opengeodeweb_back",
|
|
55
51
|
name="opengeodeweb_back",
|
|
56
52
|
)
|
|
57
|
-
|
|
58
53
|
app.register_blueprint(
|
|
59
54
|
blueprint_models.routes,
|
|
60
55
|
url_prefix="/opengeodeweb_back/models",
|
|
61
56
|
name="opengeodeweb_models",
|
|
62
57
|
)
|
|
58
|
+
app.register_blueprint(
|
|
59
|
+
blueprint_create.routes,
|
|
60
|
+
url_prefix="/opengeodeweb_back/create",
|
|
61
|
+
name="opengeodeweb_create",
|
|
62
|
+
)
|
|
63
63
|
|
|
64
64
|
if FLASK_DEBUG == False:
|
|
65
65
|
utils_functions.set_interval(
|
|
@@ -72,6 +72,11 @@ def errorhandler(e: HTTPException) -> tuple[dict[str, Any], int] | Response:
|
|
|
72
72
|
return utils_functions.handle_exception(e)
|
|
73
73
|
|
|
74
74
|
|
|
75
|
+
@app.errorhandler(Exception)
|
|
76
|
+
def handle_generic_exception(e: Exception) -> Response:
|
|
77
|
+
return flask.make_response({"error": str(e)}, 500)
|
|
78
|
+
|
|
79
|
+
|
|
75
80
|
@app.route(
|
|
76
81
|
"/error",
|
|
77
82
|
methods=["POST"],
|
|
@@ -136,13 +141,10 @@ def run_server() -> None:
|
|
|
136
141
|
help="Number of minutes before the server times out",
|
|
137
142
|
)
|
|
138
143
|
args = parser.parse_args()
|
|
139
|
-
|
|
140
144
|
app.config.update(DATA_FOLDER_PATH=args.data_folder_path)
|
|
141
145
|
app.config.update(UPLOAD_FOLDER=args.upload_folder_path)
|
|
142
146
|
app.config.update(MINUTES_BEFORE_TIMEOUT=args.timeout)
|
|
143
|
-
|
|
144
147
|
flask_cors.CORS(app, origins=args.allowed_origins)
|
|
145
|
-
|
|
146
148
|
print(
|
|
147
149
|
f"Host: {args.host}, Port: {args.port}, Debug: {args.debug}, "
|
|
148
150
|
f"Data folder path: {args.data_folder_path}, Timeout: {args.timeout}, "
|
|
@@ -158,7 +160,6 @@ def run_server() -> None:
|
|
|
158
160
|
|
|
159
161
|
connection.init_database(db_path)
|
|
160
162
|
print(f"Database initialized at: {db_path}", flush=True)
|
|
161
|
-
|
|
162
163
|
app.run(debug=args.debug, host=args.host, port=args.port, ssl_context=SSL)
|
|
163
164
|
|
|
164
165
|
|
|
@@ -10,7 +10,8 @@ import werkzeug
|
|
|
10
10
|
|
|
11
11
|
# Local application imports
|
|
12
12
|
from .. import geode_functions, utils_functions
|
|
13
|
-
|
|
13
|
+
from opengeodeweb_microservice.database.data import Data
|
|
14
|
+
from opengeodeweb_microservice.database.connection import get_session
|
|
14
15
|
from .models import blueprint_models
|
|
15
16
|
|
|
16
17
|
routes = flask.Blueprint("routes", __name__, url_prefix="/opengeodeweb_back")
|
|
@@ -22,7 +23,6 @@ routes.register_blueprint(
|
|
|
22
23
|
name=blueprint_models.routes.name,
|
|
23
24
|
)
|
|
24
25
|
|
|
25
|
-
|
|
26
26
|
schemas = os.path.join(os.path.dirname(__file__), "schemas")
|
|
27
27
|
|
|
28
28
|
with open(
|
|
@@ -244,30 +244,6 @@ def save_viewable_file():
|
|
|
244
244
|
)
|
|
245
245
|
|
|
246
246
|
|
|
247
|
-
with open(os.path.join(schemas, "create_point.json"), "r") as file:
|
|
248
|
-
create_point_json = json.load(file)
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
@routes.route(create_point_json["route"], methods=create_point_json["methods"])
|
|
252
|
-
def create_point():
|
|
253
|
-
utils_functions.validate_request(flask.request, create_point_json)
|
|
254
|
-
title = flask.request.get_json()["title"]
|
|
255
|
-
x = flask.request.get_json()["x"]
|
|
256
|
-
y = flask.request.get_json()["y"]
|
|
257
|
-
z = flask.request.get_json()["z"]
|
|
258
|
-
class_ = geode_functions.geode_object_class("PointSet3D")
|
|
259
|
-
PointSet3D = class_.create()
|
|
260
|
-
builder = geode_functions.create_builder("PointSet3D", PointSet3D)
|
|
261
|
-
builder.create_point(opengeode.Point3D([x, y, z]))
|
|
262
|
-
builder.set_name(title)
|
|
263
|
-
return flask.make_response(
|
|
264
|
-
utils_functions.generate_native_viewable_and_light_viewable_from_object(
|
|
265
|
-
"PointSet3D", PointSet3D
|
|
266
|
-
),
|
|
267
|
-
200,
|
|
268
|
-
)
|
|
269
|
-
|
|
270
|
-
|
|
271
247
|
with open(os.path.join(schemas, "texture_coordinates.json"), "r") as file:
|
|
272
248
|
texture_coordinates_json = json.load(file)
|
|
273
249
|
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Standard library imports
|
|
2
|
+
import json
|
|
3
|
+
import os
|
|
4
|
+
from typing import Any, TypedDict
|
|
5
|
+
|
|
6
|
+
# Third party imports
|
|
7
|
+
import flask
|
|
8
|
+
import opengeode
|
|
9
|
+
|
|
10
|
+
# Local application imports
|
|
11
|
+
from opengeodeweb_back import geode_functions, utils_functions
|
|
12
|
+
|
|
13
|
+
routes = flask.Blueprint("create", __name__, url_prefix="/create")
|
|
14
|
+
schemas = os.path.join(os.path.dirname(__file__), "schemas")
|
|
15
|
+
|
|
16
|
+
# --- Type definitions ---
|
|
17
|
+
type SchemaDict = dict[str, Any]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class PointDict(TypedDict):
|
|
21
|
+
x: float
|
|
22
|
+
y: float
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class CreatePointParams(TypedDict):
|
|
26
|
+
name: str
|
|
27
|
+
x: float
|
|
28
|
+
y: float
|
|
29
|
+
z: float
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class CreateAOIParams(TypedDict):
|
|
33
|
+
name: str
|
|
34
|
+
points: list[PointDict]
|
|
35
|
+
z: float
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# Load schemas
|
|
39
|
+
with open(os.path.join(schemas, "create_point.json"), "r") as file:
|
|
40
|
+
create_point_json: SchemaDict = json.load(file)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@routes.route(create_point_json["route"], methods=create_point_json["methods"])
|
|
44
|
+
def create_point() -> flask.Response:
|
|
45
|
+
"""Endpoint to create a single point in 3D space."""
|
|
46
|
+
print(f"create_point : {flask.request=}", flush=True)
|
|
47
|
+
utils_functions.validate_request(flask.request, create_point_json)
|
|
48
|
+
|
|
49
|
+
# Extract and validate data from request
|
|
50
|
+
params: CreatePointParams = flask.request.get_json()
|
|
51
|
+
name = params["name"]
|
|
52
|
+
x = params["x"]
|
|
53
|
+
y = params["y"]
|
|
54
|
+
z = params["z"]
|
|
55
|
+
|
|
56
|
+
# Create the point
|
|
57
|
+
class_ = geode_functions.geode_object_class("PointSet3D")
|
|
58
|
+
pointset = class_.create()
|
|
59
|
+
builder = geode_functions.create_builder("PointSet3D", pointset)
|
|
60
|
+
builder.set_name(name)
|
|
61
|
+
builder.create_point(opengeode.Point3D([x, y, z]))
|
|
62
|
+
|
|
63
|
+
# Save and get info
|
|
64
|
+
result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
|
|
65
|
+
geode_object="PointSet3D",
|
|
66
|
+
data=pointset,
|
|
67
|
+
)
|
|
68
|
+
result["name"] = name
|
|
69
|
+
return flask.make_response(result, 200)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# Load schema for AOI creation
|
|
73
|
+
with open(os.path.join(schemas, "create_aoi.json"), "r") as file:
|
|
74
|
+
create_aoi_json: SchemaDict = json.load(file)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@routes.route(create_aoi_json["route"], methods=create_aoi_json["methods"])
|
|
78
|
+
def create_aoi() -> flask.Response:
|
|
79
|
+
"""Endpoint to create an Area of Interest (AOI) as an EdgedCurve3D."""
|
|
80
|
+
print(f"create_aoi : {flask.request=}", flush=True)
|
|
81
|
+
utils_functions.validate_request(flask.request, create_aoi_json)
|
|
82
|
+
|
|
83
|
+
# Extract and validate data from request
|
|
84
|
+
params: CreateAOIParams = flask.request.get_json()
|
|
85
|
+
name = params["name"]
|
|
86
|
+
points = params["points"]
|
|
87
|
+
z = params["z"]
|
|
88
|
+
|
|
89
|
+
# Create the edged curve
|
|
90
|
+
class_ = geode_functions.geode_object_class("EdgedCurve3D")
|
|
91
|
+
edged_curve = class_.create()
|
|
92
|
+
builder = geode_functions.create_builder("EdgedCurve3D", edged_curve)
|
|
93
|
+
builder.set_name(name)
|
|
94
|
+
|
|
95
|
+
# Create vertices first
|
|
96
|
+
vertex_indices: list[int] = []
|
|
97
|
+
for point in points:
|
|
98
|
+
vertex_id = builder.create_point(opengeode.Point3D([point["x"], point["y"], z]))
|
|
99
|
+
vertex_indices.append(vertex_id)
|
|
100
|
+
|
|
101
|
+
# Create edges between consecutive vertices and close the loop
|
|
102
|
+
num_vertices = len(vertex_indices)
|
|
103
|
+
for i in range(num_vertices):
|
|
104
|
+
next_i = (i + 1) % num_vertices
|
|
105
|
+
edge_id = builder.create_edge()
|
|
106
|
+
builder.set_edge_vertex(opengeode.EdgeVertex(edge_id, 0), vertex_indices[i])
|
|
107
|
+
builder.set_edge_vertex(
|
|
108
|
+
opengeode.EdgeVertex(edge_id, 1), vertex_indices[next_i]
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
# Save and get info
|
|
112
|
+
result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
|
|
113
|
+
geode_object="EdgedCurve3D",
|
|
114
|
+
data=edged_curve,
|
|
115
|
+
)
|
|
116
|
+
result["name"] = name
|
|
117
|
+
return flask.make_response(result, 200)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"route": "/create_aoi",
|
|
3
|
+
"methods": [
|
|
4
|
+
"POST"
|
|
5
|
+
],
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"name": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "Name of the AOI"
|
|
11
|
+
},
|
|
12
|
+
"points": {
|
|
13
|
+
"type": "array",
|
|
14
|
+
"items": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"properties": {
|
|
17
|
+
"x": {
|
|
18
|
+
"type": "number"
|
|
19
|
+
},
|
|
20
|
+
"y": {
|
|
21
|
+
"type": "number"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"required": [
|
|
25
|
+
"x",
|
|
26
|
+
"y"
|
|
27
|
+
],
|
|
28
|
+
"additionalProperties": false
|
|
29
|
+
},
|
|
30
|
+
"minItems": 4,
|
|
31
|
+
"maxItems": 4
|
|
32
|
+
},
|
|
33
|
+
"z": {
|
|
34
|
+
"type": "number"
|
|
35
|
+
},
|
|
36
|
+
"id": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"required": [
|
|
41
|
+
"name",
|
|
42
|
+
"points",
|
|
43
|
+
"z"
|
|
44
|
+
],
|
|
45
|
+
"additionalProperties": false
|
|
46
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"route": "/create_point",
|
|
3
|
+
"methods": [
|
|
4
|
+
"POST"
|
|
5
|
+
],
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"name": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"minLength": 1
|
|
11
|
+
},
|
|
12
|
+
"x": {
|
|
13
|
+
"type": "number"
|
|
14
|
+
},
|
|
15
|
+
"y": {
|
|
16
|
+
"type": "number"
|
|
17
|
+
},
|
|
18
|
+
"z": {
|
|
19
|
+
"type": "number"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"required": [
|
|
23
|
+
"name",
|
|
24
|
+
"x",
|
|
25
|
+
"y",
|
|
26
|
+
"z"
|
|
27
|
+
],
|
|
28
|
+
"additionalProperties": false
|
|
29
|
+
}
|
{opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/utils_functions.py
RENAMED
|
@@ -211,6 +211,7 @@ def save_all_viewables_and_return_info(
|
|
|
211
211
|
"native_file_name": data_entry.native_file_name,
|
|
212
212
|
"viewable_file_name": data_entry.viewable_file_name,
|
|
213
213
|
"id": data_entry.id,
|
|
214
|
+
"name": data.name(), # type: ignore
|
|
214
215
|
"object_type": geode_functions.get_object_type(geode_object),
|
|
215
216
|
"binary_light_viewable": binary_light_viewable.decode("utf-8"),
|
|
216
217
|
"geode_object": data_entry.geode_object,
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Standard library imports
|
|
2
|
+
import os
|
|
3
|
+
import uuid
|
|
4
|
+
from typing import Any, Callable, Dict, List
|
|
5
|
+
|
|
6
|
+
# Third party imports
|
|
7
|
+
import pytest
|
|
8
|
+
from flask.testing import FlaskClient
|
|
9
|
+
|
|
10
|
+
# Local application imports
|
|
11
|
+
from src.opengeodeweb_back import test_utils
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
def point_data() -> Dict[str, Any]:
|
|
16
|
+
return {"name": "test_point", "x": 1.0, "y": 2.0, "z": 3.0}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@pytest.fixture
|
|
20
|
+
def aoi_data() -> Dict[str, Any]:
|
|
21
|
+
return {
|
|
22
|
+
"name": "test_aoi",
|
|
23
|
+
"points": [
|
|
24
|
+
{"x": 0.0, "y": 0.0},
|
|
25
|
+
{"x": 1.0, "y": 0.0},
|
|
26
|
+
{"x": 1.0, "y": 1.0},
|
|
27
|
+
{"x": 0.0, "y": 1.0},
|
|
28
|
+
],
|
|
29
|
+
"z": 0.0,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_create_point(client: FlaskClient, point_data: Dict[str, Any]) -> None:
|
|
34
|
+
"""Test the creation of a point with valid data."""
|
|
35
|
+
route: str = "/opengeodeweb_back/create/create_point"
|
|
36
|
+
|
|
37
|
+
# Test with all required data
|
|
38
|
+
response = client.post(route, json=point_data)
|
|
39
|
+
assert response.status_code == 200
|
|
40
|
+
|
|
41
|
+
# Verify response data
|
|
42
|
+
response_data: Any = response.json
|
|
43
|
+
assert "viewable_file_name" in response_data
|
|
44
|
+
assert "id" in response_data
|
|
45
|
+
assert "name" in response_data
|
|
46
|
+
assert "native_file_name" in response_data
|
|
47
|
+
assert "object_type" in response_data
|
|
48
|
+
assert "geode_object" in response_data
|
|
49
|
+
|
|
50
|
+
assert response_data["name"] == point_data["name"]
|
|
51
|
+
assert response_data["object_type"] == "mesh"
|
|
52
|
+
assert response_data["geode_object"] == "PointSet3D"
|
|
53
|
+
|
|
54
|
+
# Test with missing parameters
|
|
55
|
+
test_utils.test_route_wrong_params(client, route, lambda: point_data.copy()) # type: ignore
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def test_create_aoi(client: FlaskClient, aoi_data: Dict[str, Any]) -> None:
|
|
59
|
+
"""Test the creation of an AOI with valid data."""
|
|
60
|
+
route: str = "/opengeodeweb_back/create/create_aoi"
|
|
61
|
+
|
|
62
|
+
# Test with all required data
|
|
63
|
+
response = client.post(route, json=aoi_data)
|
|
64
|
+
assert response.status_code == 200
|
|
65
|
+
|
|
66
|
+
# Verify response data
|
|
67
|
+
response_data: Any = response.json
|
|
68
|
+
assert "viewable_file_name" in response_data
|
|
69
|
+
assert "id" in response_data
|
|
70
|
+
assert "name" in response_data
|
|
71
|
+
assert "native_file_name" in response_data
|
|
72
|
+
assert "object_type" in response_data
|
|
73
|
+
assert "geode_object" in response_data
|
|
74
|
+
|
|
75
|
+
assert response_data["name"] == aoi_data["name"]
|
|
76
|
+
assert response_data["object_type"] == "mesh"
|
|
77
|
+
assert response_data["geode_object"] == "EdgedCurve3D"
|
|
78
|
+
|
|
79
|
+
# Test with missing parameters
|
|
80
|
+
test_utils.test_route_wrong_params(client, route, lambda: aoi_data.copy()) # type: ignore
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_create_point_with_invalid_data(client: FlaskClient) -> None:
|
|
84
|
+
"""Test the point creation endpoint with invalid data."""
|
|
85
|
+
route: str = "/opengeodeweb_back/create/create_point"
|
|
86
|
+
|
|
87
|
+
# Test with non-numeric coordinates
|
|
88
|
+
invalid_data: Dict[str, Any] = {
|
|
89
|
+
"name": "invalid_point",
|
|
90
|
+
"x": "not_a_number",
|
|
91
|
+
"y": 2.0,
|
|
92
|
+
"z": 3.0,
|
|
93
|
+
}
|
|
94
|
+
response = client.post(route, json=invalid_data)
|
|
95
|
+
assert response.status_code == 400
|
|
96
|
+
|
|
97
|
+
# Test with missing coordinates
|
|
98
|
+
invalid_data = {"name": "invalid_point", "y": 2.0, "z": 3.0}
|
|
99
|
+
response = client.post(route, json=invalid_data)
|
|
100
|
+
assert response.status_code == 400
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def test_create_aoi_with_invalid_data(
|
|
104
|
+
client: FlaskClient, aoi_data: Dict[str, Any]
|
|
105
|
+
) -> None:
|
|
106
|
+
"""Test the AOI creation endpoint with invalid data."""
|
|
107
|
+
route: str = "/opengeodeweb_back/create/create_aoi"
|
|
108
|
+
|
|
109
|
+
# Test with invalid points
|
|
110
|
+
invalid_data: Dict[str, Any] = {
|
|
111
|
+
**aoi_data,
|
|
112
|
+
"points": [
|
|
113
|
+
{"x": "not_a_number", "y": 0.0},
|
|
114
|
+
{"x": 1.0, "y": 0.0},
|
|
115
|
+
{"x": 1.0, "y": 1.0},
|
|
116
|
+
{"x": 0.0, "y": 1.0},
|
|
117
|
+
],
|
|
118
|
+
}
|
|
119
|
+
response = client.post(route, json=invalid_data)
|
|
120
|
+
assert response.status_code == 400
|
|
121
|
+
|
|
122
|
+
# Test with too few points
|
|
123
|
+
invalid_data = {**aoi_data, "points": [{"x": 0.0, "y": 0.0}, {"x": 1.0, "y": 0.0}]}
|
|
124
|
+
response = client.post(route, json=invalid_data)
|
|
125
|
+
assert response.status_code == 400
|
|
126
|
+
|
|
127
|
+
# Test with invalid z value
|
|
128
|
+
invalid_data = {**aoi_data, "z": "not_a_number"}
|
|
129
|
+
response = client.post(route, json=invalid_data)
|
|
130
|
+
assert response.status_code == 400
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def test_create_point_file_generation(
|
|
134
|
+
client: FlaskClient, point_data: Dict[str, Any]
|
|
135
|
+
) -> None:
|
|
136
|
+
"""Test that the point creation generates the correct files."""
|
|
137
|
+
route: str = "/opengeodeweb_back/create/create_point"
|
|
138
|
+
|
|
139
|
+
# Make the request
|
|
140
|
+
response = client.post(route, json=point_data)
|
|
141
|
+
assert response.status_code == 200
|
|
142
|
+
response_data: Any = response.json
|
|
143
|
+
|
|
144
|
+
# Get the data folder path for this specific ID
|
|
145
|
+
DATA_FOLDER_PATH: str = client.application.config["DATA_FOLDER_PATH"]
|
|
146
|
+
data_id: str = response_data["id"]
|
|
147
|
+
data_folder: str = os.path.join(DATA_FOLDER_PATH, data_id)
|
|
148
|
+
|
|
149
|
+
# Check that the data folder exists
|
|
150
|
+
assert os.path.exists(data_folder)
|
|
151
|
+
assert os.path.isdir(data_folder)
|
|
152
|
+
|
|
153
|
+
# Check native file exists
|
|
154
|
+
native_file_path: str = os.path.join(data_folder, response_data["native_file_name"])
|
|
155
|
+
assert os.path.exists(native_file_path)
|
|
156
|
+
|
|
157
|
+
# Check viewable file exists
|
|
158
|
+
viewable_file_path: str = os.path.join(
|
|
159
|
+
data_folder, response_data["viewable_file_name"]
|
|
160
|
+
)
|
|
161
|
+
assert os.path.exists(viewable_file_path)
|
|
162
|
+
|
|
163
|
+
# Check light viewable file exists if present
|
|
164
|
+
if "binary_light_viewable" in response_data:
|
|
165
|
+
light_viewable_file_path: str = os.path.join(data_folder, "light_viewable.vtp")
|
|
166
|
+
assert os.path.exists(light_viewable_file_path)
|
|
167
|
+
|
|
168
|
+
# Verify file extensions
|
|
169
|
+
assert response_data["native_file_name"].endswith(".og_pts3d")
|
|
170
|
+
assert response_data["viewable_file_name"].endswith(".vtp")
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def test_create_aoi_file_generation(
|
|
174
|
+
client: FlaskClient, aoi_data: Dict[str, Any]
|
|
175
|
+
) -> None:
|
|
176
|
+
"""Test that the AOI creation generates the correct files."""
|
|
177
|
+
route: str = "/opengeodeweb_back/create/create_aoi"
|
|
178
|
+
|
|
179
|
+
# Make the request
|
|
180
|
+
response = client.post(route, json=aoi_data)
|
|
181
|
+
assert response.status_code == 200
|
|
182
|
+
response_data: Any = response.json
|
|
183
|
+
|
|
184
|
+
# Get the data folder path for this specific ID
|
|
185
|
+
DATA_FOLDER_PATH: str = client.application.config["DATA_FOLDER_PATH"]
|
|
186
|
+
data_id: str = response_data["id"]
|
|
187
|
+
data_folder: str = os.path.join(DATA_FOLDER_PATH, data_id)
|
|
188
|
+
|
|
189
|
+
# Check that the data folder exists
|
|
190
|
+
assert os.path.exists(data_folder)
|
|
191
|
+
assert os.path.isdir(data_folder)
|
|
192
|
+
|
|
193
|
+
# Check native file exists
|
|
194
|
+
native_file_path: str = os.path.join(data_folder, response_data["native_file_name"])
|
|
195
|
+
assert os.path.exists(native_file_path)
|
|
196
|
+
|
|
197
|
+
# Check viewable file exists
|
|
198
|
+
viewable_file_path: str = os.path.join(
|
|
199
|
+
data_folder, response_data["viewable_file_name"]
|
|
200
|
+
)
|
|
201
|
+
assert os.path.exists(viewable_file_path)
|
|
202
|
+
|
|
203
|
+
# Check light viewable file exists if present
|
|
204
|
+
if "binary_light_viewable" in response_data:
|
|
205
|
+
light_viewable_file_path: str = os.path.join(data_folder, "light_viewable.vtp")
|
|
206
|
+
assert os.path.exists(light_viewable_file_path)
|
|
207
|
+
|
|
208
|
+
# Verify file extensions
|
|
209
|
+
assert response_data["native_file_name"].endswith(".og_edc3d")
|
|
210
|
+
assert response_data["viewable_file_name"].endswith(".vtp")
|
|
@@ -274,22 +274,6 @@ def test_polyhedron_attribute_names(client, test_id):
|
|
|
274
274
|
assert type(polyhedron_attribute_name) is str
|
|
275
275
|
|
|
276
276
|
|
|
277
|
-
def test_create_point(client):
|
|
278
|
-
route = f"/opengeodeweb_back/create_point"
|
|
279
|
-
get_full_data = lambda: {"title": "test_point", "x": 1, "y": 2, "z": 3}
|
|
280
|
-
|
|
281
|
-
# Normal test with all keys
|
|
282
|
-
response = client.post(route, json=get_full_data())
|
|
283
|
-
assert response.status_code == 200
|
|
284
|
-
viewable_file_name = response.json["viewable_file_name"]
|
|
285
|
-
assert type(viewable_file_name) is str
|
|
286
|
-
id = response.json.get("id")
|
|
287
|
-
assert type(id) is str
|
|
288
|
-
|
|
289
|
-
# Test all params
|
|
290
|
-
test_utils.test_route_wrong_params(client, route, get_full_data)
|
|
291
|
-
|
|
292
|
-
|
|
293
277
|
def test_database_uri_path(client):
|
|
294
278
|
app = client.application
|
|
295
279
|
with app.app_context():
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
asgiref>=3
|
|
2
|
-
blinker>=1
|
|
3
|
-
click>=8
|
|
4
|
-
flask[async]>=3
|
|
5
|
-
flask-cors==6.0.1
|
|
6
|
-
geode-common==33.11.0
|
|
7
|
-
geode-viewables==3.3.0
|
|
8
|
-
itsdangerous>=2
|
|
9
|
-
jinja2>=3
|
|
10
|
-
markupsafe>=3
|
|
11
|
-
opengeode-core==15.27.4
|
|
12
|
-
opengeode-geosciences==9.4.1
|
|
13
|
-
opengeode-geosciencesio==5.8.0
|
|
14
|
-
opengeode-inspector==6.8.1
|
|
15
|
-
opengeode-io==7.4.0
|
|
16
|
-
werkzeug==3.1.2
|
|
17
|
-
opengeodeweb-microservice==1.*,>=1.0.5rc1
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"route": "/create_point",
|
|
3
|
-
"methods": [
|
|
4
|
-
"POST"
|
|
5
|
-
],
|
|
6
|
-
"type": "object",
|
|
7
|
-
"properties": {
|
|
8
|
-
"title": {
|
|
9
|
-
"type": "string",
|
|
10
|
-
"minLength": 1
|
|
11
|
-
},
|
|
12
|
-
"x": {
|
|
13
|
-
"type": "number"
|
|
14
|
-
},
|
|
15
|
-
"y": {
|
|
16
|
-
"type": "number"
|
|
17
|
-
},
|
|
18
|
-
"z": {
|
|
19
|
-
"type": "number"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"required": [
|
|
23
|
-
"title",
|
|
24
|
-
"x",
|
|
25
|
-
"y",
|
|
26
|
-
"z"
|
|
27
|
-
],
|
|
28
|
-
"additionalProperties": false
|
|
29
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/__init__.py
RENAMED
|
File without changes
|
{opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/app_config.py
RENAMED
|
File without changes
|
{opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/geode_functions.py
RENAMED
|
File without changes
|
{opengeodeweb_back-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/geode_objects.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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-5.10.5rc1 → opengeodeweb_back-5.11.0rc1}/src/opengeodeweb_back/test_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|