OpenGeodeWeb-Back 5.10.2__tar.gz → 5.10.3rc2__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.2/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-5.10.3rc2}/PKG-INFO +9 -20
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/pyproject.toml +4 -2
- opengeodeweb_back-5.10.3rc2/requirements.txt +11 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +9 -20
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +2 -0
- opengeodeweb_back-5.10.3rc2/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +2 -0
- opengeodeweb_back-5.10.3rc2/src/OpenGeodeWeb_Back.egg-info/requires.txt +11 -0
- opengeodeweb_back-5.10.3rc2/src/opengeodeweb_back/app.py +156 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/app_config.py +1 -10
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/utils_functions.py +0 -5
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/tests/test_geode_functions.py +1 -1
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/tests/test_models_routes.py +3 -3
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/tests/test_routes.py +16 -14
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/tests/test_utils_functions.py +1 -1
- opengeodeweb_back-5.10.2/requirements.txt +0 -92
- opengeodeweb_back-5.10.2/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -22
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/LICENSE +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/README.md +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/setup.cfg +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/__init__.py +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/geode_functions.py +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/geode_objects.py +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/py.typed +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/blueprint_routes.py +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/models/blueprint_models.py +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/models/schemas/mesh_components.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/models/schemas/vtm_component_indices.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/create_point.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
- {opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/test_utils.py +0 -0
{opengeodeweb_back-5.10.2/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-5.10.3rc2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OpenGeodeWeb-Back
|
|
3
|
-
Version: 5.10.
|
|
3
|
+
Version: 5.10.3rc2
|
|
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
|
|
@@ -11,28 +11,17 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: <3.13,>=3.9
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE
|
|
14
|
-
Requires-Dist: asgiref~=3.9
|
|
15
|
-
Requires-Dist: blinker~=1.9
|
|
16
|
-
Requires-Dist: click~=8.3
|
|
17
|
-
Requires-Dist: fastjsonschema~=2.21
|
|
18
|
-
Requires-Dist: flask[async]~=3.1
|
|
19
|
-
Requires-Dist: flask-cors==6.0.1
|
|
20
|
-
Requires-Dist: flask-sqlalchemy==3.1.1
|
|
21
|
-
Requires-Dist: geode-common==33.11.0
|
|
22
|
-
Requires-Dist: geode-viewables==3.3.0
|
|
23
|
-
Requires-Dist: greenlet~=3.2
|
|
24
|
-
Requires-Dist: itsdangerous~=2.2
|
|
25
|
-
Requires-Dist: jinja2~=3.1
|
|
26
|
-
Requires-Dist: markupsafe~=3.0
|
|
27
14
|
Requires-Dist: opengeode-core==15.27.4
|
|
15
|
+
Requires-Dist: opengeode-io==7.4.0
|
|
16
|
+
Requires-Dist: opengeode-inspector==6.8.1
|
|
28
17
|
Requires-Dist: opengeode-geosciences==9.4.1
|
|
29
18
|
Requires-Dist: opengeode-geosciencesio==5.8.0
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
19
|
+
Requires-Dist: geode-common==33.11.0
|
|
20
|
+
Requires-Dist: geode-viewables==3.3.0
|
|
21
|
+
Requires-Dist: flask[async]==3.1.2
|
|
22
|
+
Requires-Dist: flask-cors==6.0.1
|
|
23
|
+
Requires-Dist: werkzeug==3.1.2
|
|
24
|
+
Requires-Dist: flask-sqlalchemy==3.1.1
|
|
36
25
|
Dynamic: license-file
|
|
37
26
|
|
|
38
27
|
<h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
requires = ["setuptools"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
[project]
|
|
7
6
|
name = "OpenGeodeWeb-Back"
|
|
8
|
-
version = "5.10.2"
|
|
7
|
+
version = "5.10.3-rc.2"
|
|
9
8
|
dynamic = ["dependencies"]
|
|
10
9
|
authors = [{ name = "Geode-solutions", email = "team-web@geode-solutions.com" }]
|
|
11
10
|
description = "OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem"
|
|
@@ -21,6 +20,9 @@ classifiers = [
|
|
|
21
20
|
"Homepage" = "https://github.com/Geode-solutions/OpenGeodeWeb-Back"
|
|
22
21
|
"Bug Tracker" = "https://github.com/Geode-solutions/OpenGeodeWeb-Back/issues"
|
|
23
22
|
|
|
23
|
+
[project.scripts]
|
|
24
|
+
opengeodeweb-back = "opengeodeweb_back.app:run_server"
|
|
25
|
+
|
|
24
26
|
[tool.setuptools.dynamic]
|
|
25
27
|
dependencies = { file = ["requirements.txt"] }
|
|
26
28
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
opengeode-core==15.27.4
|
|
2
|
+
opengeode-io==7.4.0
|
|
3
|
+
opengeode-inspector==6.8.1
|
|
4
|
+
opengeode-geosciences==9.4.1
|
|
5
|
+
opengeode-geosciencesio==5.8.0
|
|
6
|
+
geode-common==33.11.0
|
|
7
|
+
geode-viewables==3.3.0
|
|
8
|
+
flask[async]==3.1.2
|
|
9
|
+
flask-cors==6.0.1
|
|
10
|
+
werkzeug==3.1.2
|
|
11
|
+
flask-sqlalchemy==3.1.1
|
{opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2/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.10.
|
|
3
|
+
Version: 5.10.3rc2
|
|
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
|
|
@@ -11,28 +11,17 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: <3.13,>=3.9
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE
|
|
14
|
-
Requires-Dist: asgiref~=3.9
|
|
15
|
-
Requires-Dist: blinker~=1.9
|
|
16
|
-
Requires-Dist: click~=8.3
|
|
17
|
-
Requires-Dist: fastjsonschema~=2.21
|
|
18
|
-
Requires-Dist: flask[async]~=3.1
|
|
19
|
-
Requires-Dist: flask-cors==6.0.1
|
|
20
|
-
Requires-Dist: flask-sqlalchemy==3.1.1
|
|
21
|
-
Requires-Dist: geode-common==33.11.0
|
|
22
|
-
Requires-Dist: geode-viewables==3.3.0
|
|
23
|
-
Requires-Dist: greenlet~=3.2
|
|
24
|
-
Requires-Dist: itsdangerous~=2.2
|
|
25
|
-
Requires-Dist: jinja2~=3.1
|
|
26
|
-
Requires-Dist: markupsafe~=3.0
|
|
27
14
|
Requires-Dist: opengeode-core==15.27.4
|
|
15
|
+
Requires-Dist: opengeode-io==7.4.0
|
|
16
|
+
Requires-Dist: opengeode-inspector==6.8.1
|
|
28
17
|
Requires-Dist: opengeode-geosciences==9.4.1
|
|
29
18
|
Requires-Dist: opengeode-geosciencesio==5.8.0
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
19
|
+
Requires-Dist: geode-common==33.11.0
|
|
20
|
+
Requires-Dist: geode-viewables==3.3.0
|
|
21
|
+
Requires-Dist: flask[async]==3.1.2
|
|
22
|
+
Requires-Dist: flask-cors==6.0.1
|
|
23
|
+
Requires-Dist: werkzeug==3.1.2
|
|
24
|
+
Requires-Dist: flask-sqlalchemy==3.1.1
|
|
36
25
|
Dynamic: license-file
|
|
37
26
|
|
|
38
27
|
<h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
|
{opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt
RENAMED
|
@@ -5,9 +5,11 @@ requirements.txt
|
|
|
5
5
|
src/OpenGeodeWeb_Back.egg-info/PKG-INFO
|
|
6
6
|
src/OpenGeodeWeb_Back.egg-info/SOURCES.txt
|
|
7
7
|
src/OpenGeodeWeb_Back.egg-info/dependency_links.txt
|
|
8
|
+
src/OpenGeodeWeb_Back.egg-info/entry_points.txt
|
|
8
9
|
src/OpenGeodeWeb_Back.egg-info/requires.txt
|
|
9
10
|
src/OpenGeodeWeb_Back.egg-info/top_level.txt
|
|
10
11
|
src/opengeodeweb_back/__init__.py
|
|
12
|
+
src/opengeodeweb_back/app.py
|
|
11
13
|
src/opengeodeweb_back/app_config.py
|
|
12
14
|
src/opengeodeweb_back/geode_functions.py
|
|
13
15
|
src/opengeodeweb_back/geode_objects.py
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
opengeode-core==15.27.4
|
|
2
|
+
opengeode-io==7.4.0
|
|
3
|
+
opengeode-inspector==6.8.1
|
|
4
|
+
opengeode-geosciences==9.4.1
|
|
5
|
+
opengeode-geosciencesio==5.8.0
|
|
6
|
+
geode-common==33.11.0
|
|
7
|
+
geode-viewables==3.3.0
|
|
8
|
+
flask[async]==3.1.2
|
|
9
|
+
flask-cors==6.0.1
|
|
10
|
+
werkzeug==3.1.2
|
|
11
|
+
flask-sqlalchemy==3.1.1
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"""Packages"""
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import os
|
|
5
|
+
import time
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
import flask
|
|
9
|
+
import flask_cors # type: ignore
|
|
10
|
+
from flask import Flask, Response
|
|
11
|
+
from flask_cors import cross_origin
|
|
12
|
+
from werkzeug.exceptions import HTTPException
|
|
13
|
+
|
|
14
|
+
from opengeodeweb_back import utils_functions, app_config
|
|
15
|
+
from opengeodeweb_back.routes import blueprint_routes
|
|
16
|
+
from opengeodeweb_back.routes.models import blueprint_models
|
|
17
|
+
from opengeodeweb_microservice.database.connection import init_database
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
""" Global config """
|
|
21
|
+
app: Flask = flask.Flask(__name__)
|
|
22
|
+
|
|
23
|
+
""" Config variables """
|
|
24
|
+
FLASK_DEBUG = True if os.environ.get("FLASK_DEBUG", default=None) == "True" else False
|
|
25
|
+
|
|
26
|
+
if FLASK_DEBUG == False:
|
|
27
|
+
app.config.from_object(app_config.ProdConfig)
|
|
28
|
+
else:
|
|
29
|
+
app.config.from_object(app_config.DevConfig)
|
|
30
|
+
|
|
31
|
+
DEFAULT_HOST: str = app.config.get("DEFAULT_HOST") or "localhost"
|
|
32
|
+
DEFAULT_PORT: int = int(app.config.get("DEFAULT_PORT") or 5000)
|
|
33
|
+
DEFAULT_DATA_FOLDER_PATH: str = app.config.get("DEFAULT_DATA_FOLDER_PATH") or "./data"
|
|
34
|
+
ORIGINS: Any = app.config.get("ORIGINS")
|
|
35
|
+
TIMEOUT: int = int(app.config.get("MINUTES_BEFORE_TIMEOUT") or 30)
|
|
36
|
+
SSL: Any = app.config.get("SSL")
|
|
37
|
+
SECONDS_BETWEEN_SHUTDOWNS: float = float(
|
|
38
|
+
app.config.get("SECONDS_BETWEEN_SHUTDOWNS") or 60.0
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
app.register_blueprint(
|
|
43
|
+
blueprint_routes.routes,
|
|
44
|
+
url_prefix="/opengeodeweb_back",
|
|
45
|
+
name="opengeodeweb_back",
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
app.register_blueprint(
|
|
49
|
+
blueprint_models.routes,
|
|
50
|
+
url_prefix="/opengeodeweb_back/models",
|
|
51
|
+
name="opengeodeweb_models",
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
if FLASK_DEBUG == False:
|
|
55
|
+
utils_functions.set_interval(
|
|
56
|
+
utils_functions.kill_task, SECONDS_BETWEEN_SHUTDOWNS, app
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@app.errorhandler(HTTPException)
|
|
61
|
+
def errorhandler(e: HTTPException) -> tuple[dict[str, Any], int] | Response:
|
|
62
|
+
return utils_functions.handle_exception(e)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@app.route(
|
|
66
|
+
"/error",
|
|
67
|
+
methods=["POST"],
|
|
68
|
+
)
|
|
69
|
+
def return_error() -> Response:
|
|
70
|
+
flask.abort(500, f"Test")
|
|
71
|
+
return flask.make_response({}, 500)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
@app.route("/", methods=["POST"])
|
|
75
|
+
@cross_origin()
|
|
76
|
+
def root() -> Response:
|
|
77
|
+
return flask.make_response({}, 200)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@app.route("/kill", methods=["POST"])
|
|
81
|
+
@cross_origin()
|
|
82
|
+
def kill() -> None:
|
|
83
|
+
print("Manual server kill, shutting down...", flush=True)
|
|
84
|
+
os._exit(0)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def run_server() -> None:
|
|
88
|
+
parser = argparse.ArgumentParser(
|
|
89
|
+
prog="OpenGeodeWeb-Back", description="Backend server for OpenGeodeWeb"
|
|
90
|
+
)
|
|
91
|
+
parser.add_argument("--host", type=str, default=DEFAULT_HOST, help="Host to run on")
|
|
92
|
+
parser.add_argument(
|
|
93
|
+
"-p", "--port", type=int, default=DEFAULT_PORT, help="Port to listen on"
|
|
94
|
+
)
|
|
95
|
+
parser.add_argument(
|
|
96
|
+
"-d",
|
|
97
|
+
"--debug",
|
|
98
|
+
default=FLASK_DEBUG,
|
|
99
|
+
help="Whether to run in debug mode",
|
|
100
|
+
action="store_true",
|
|
101
|
+
)
|
|
102
|
+
parser.add_argument(
|
|
103
|
+
"-dfp",
|
|
104
|
+
"--data_folder_path",
|
|
105
|
+
type=str,
|
|
106
|
+
default=DEFAULT_DATA_FOLDER_PATH,
|
|
107
|
+
help="Path to the folder where data is stored",
|
|
108
|
+
)
|
|
109
|
+
parser.add_argument(
|
|
110
|
+
"-ufp",
|
|
111
|
+
"--upload_folder_path",
|
|
112
|
+
type=str,
|
|
113
|
+
default=DEFAULT_DATA_FOLDER_PATH,
|
|
114
|
+
help="Path to the folder where uploads are stored",
|
|
115
|
+
)
|
|
116
|
+
parser.add_argument(
|
|
117
|
+
"-origins",
|
|
118
|
+
"--allowed_origins",
|
|
119
|
+
default=ORIGINS,
|
|
120
|
+
help="Origins that are allowed to connect to the server",
|
|
121
|
+
)
|
|
122
|
+
parser.add_argument(
|
|
123
|
+
"-t",
|
|
124
|
+
"--timeout",
|
|
125
|
+
default=TIMEOUT,
|
|
126
|
+
help="Number of minutes before the server times out",
|
|
127
|
+
)
|
|
128
|
+
args = parser.parse_args()
|
|
129
|
+
|
|
130
|
+
app.config.update(DATA_FOLDER_PATH=args.data_folder_path)
|
|
131
|
+
app.config.update(UPLOAD_FOLDER=args.upload_folder_path)
|
|
132
|
+
app.config.update(MINUTES_BEFORE_TIMEOUT=args.timeout)
|
|
133
|
+
|
|
134
|
+
flask_cors.CORS(app, origins=args.allowed_origins)
|
|
135
|
+
|
|
136
|
+
print(
|
|
137
|
+
f"Host: {args.host}, Port: {args.port}, Debug: {args.debug}, "
|
|
138
|
+
f"Data folder path: {args.data_folder_path}, Timeout: {args.timeout}, "
|
|
139
|
+
f"Origins: {args.allowed_origins}",
|
|
140
|
+
flush=True,
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
db_filename: str = app.config.get("DATABASE_FILENAME") or "database.db"
|
|
144
|
+
db_path = os.path.join(args.data_folder_path, db_filename)
|
|
145
|
+
os.makedirs(os.path.dirname(db_path), exist_ok=True)
|
|
146
|
+
app.config["SQLALCHEMY_DATABASE_URI"] = f"sqlite:///{db_path}"
|
|
147
|
+
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
|
|
148
|
+
init_database(app, db_filename)
|
|
149
|
+
print(f"Database initialized at: {db_path}", flush=True)
|
|
150
|
+
|
|
151
|
+
app.run(debug=args.debug, host=args.host, port=args.port, ssl_context=SSL)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
# ''' Main '''
|
|
155
|
+
if __name__ == "__main__":
|
|
156
|
+
run_server()
|
{opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/app_config.py
RENAMED
|
@@ -4,9 +4,6 @@ import time
|
|
|
4
4
|
|
|
5
5
|
# Third party imports
|
|
6
6
|
# Local application imports
|
|
7
|
-
from opengeodeweb_microservice.database.connection import get_database
|
|
8
|
-
|
|
9
|
-
DATABASE_FILENAME = "project.db"
|
|
10
7
|
|
|
11
8
|
|
|
12
9
|
class Config(object):
|
|
@@ -18,7 +15,7 @@ class Config(object):
|
|
|
18
15
|
REQUEST_COUNTER = 0
|
|
19
16
|
LAST_REQUEST_TIME = time.time()
|
|
20
17
|
LAST_PING_TIME = time.time()
|
|
21
|
-
|
|
18
|
+
DATABASE_FILENAME = "project.db"
|
|
22
19
|
|
|
23
20
|
|
|
24
21
|
class ProdConfig(Config):
|
|
@@ -27,9 +24,6 @@ class ProdConfig(Config):
|
|
|
27
24
|
MINUTES_BEFORE_TIMEOUT = "1"
|
|
28
25
|
SECONDS_BETWEEN_SHUTDOWNS = "10"
|
|
29
26
|
DATA_FOLDER_PATH = "/data"
|
|
30
|
-
SQLALCHEMY_DATABASE_URI = f"sqlite:///{os.path.abspath(
|
|
31
|
-
os.path.join(DATA_FOLDER_PATH, DATABASE_FILENAME)
|
|
32
|
-
)}"
|
|
33
27
|
|
|
34
28
|
|
|
35
29
|
class DevConfig(Config):
|
|
@@ -39,6 +33,3 @@ class DevConfig(Config):
|
|
|
39
33
|
SECONDS_BETWEEN_SHUTDOWNS = "10"
|
|
40
34
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
41
35
|
DATA_FOLDER_PATH = os.path.join(BASE_DIR, "data")
|
|
42
|
-
SQLALCHEMY_DATABASE_URI = f"sqlite:///{os.path.join(
|
|
43
|
-
BASE_DIR, DATA_FOLDER_PATH, DATABASE_FILENAME
|
|
44
|
-
)}"
|
{opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/utils_functions.py
RENAMED
|
@@ -88,7 +88,6 @@ def validate_request(request: flask.Request, schema: dict[str, str]) -> None:
|
|
|
88
88
|
|
|
89
89
|
if json_data is None:
|
|
90
90
|
json_data = {}
|
|
91
|
-
|
|
92
91
|
try:
|
|
93
92
|
validate = fastjsonschema.compile(schema)
|
|
94
93
|
validate(json_data)
|
|
@@ -259,10 +258,6 @@ def generate_native_viewable_and_light_viewable_from_file(
|
|
|
259
258
|
|
|
260
259
|
data = geode_functions.load(geode_object, copied_full_path)
|
|
261
260
|
|
|
262
|
-
# Remplacer :
|
|
263
|
-
# database.session.delete(temp_data_entry)
|
|
264
|
-
# database.session.flush()
|
|
265
|
-
# Par :
|
|
266
261
|
session = get_session()
|
|
267
262
|
if session:
|
|
268
263
|
session.delete(temp_data_entry)
|
|
@@ -5,7 +5,7 @@ import uuid
|
|
|
5
5
|
# Third party imports
|
|
6
6
|
|
|
7
7
|
# Local application imports
|
|
8
|
-
from
|
|
8
|
+
from opengeodeweb_back import geode_functions, geode_objects
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
data_folder = os.path.join(os.path.dirname(__file__), "data")
|
|
@@ -2,13 +2,13 @@ import os
|
|
|
2
2
|
import shutil
|
|
3
3
|
import flask
|
|
4
4
|
|
|
5
|
-
from
|
|
5
|
+
from opengeodeweb_back import geode_functions
|
|
6
6
|
from opengeodeweb_microservice.database.data import Data
|
|
7
7
|
from opengeodeweb_microservice.database.connection import get_session
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def test_model_mesh_components(client, test_id):
|
|
11
|
-
route =
|
|
11
|
+
route = "/opengeodeweb_back/models/vtm_component_indices"
|
|
12
12
|
|
|
13
13
|
with client.application.app_context():
|
|
14
14
|
data_path = geode_functions.data_file_path(test_id, "viewable.vtm")
|
|
@@ -29,7 +29,7 @@ def test_model_mesh_components(client, test_id):
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
def test_extract_brep_uuids(client, test_id):
|
|
32
|
-
route = "/models/mesh_components"
|
|
32
|
+
route = "/opengeodeweb_back/models/mesh_components"
|
|
33
33
|
brep_filename = "cube.og_brep"
|
|
34
34
|
|
|
35
35
|
with client.application.app_context():
|
|
@@ -8,11 +8,11 @@ from werkzeug.datastructures import FileStorage
|
|
|
8
8
|
# Local application imports
|
|
9
9
|
from opengeodeweb_microservice.database.data import Data
|
|
10
10
|
from opengeodeweb_microservice.database.connection import get_session
|
|
11
|
-
from
|
|
11
|
+
from opengeodeweb_back import geode_functions, test_utils
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def test_allowed_files(client):
|
|
15
|
-
route = f"/allowed_files"
|
|
15
|
+
route = f"/opengeodeweb_back/allowed_files"
|
|
16
16
|
get_full_data = lambda: {"supported_feature": "None"}
|
|
17
17
|
json = get_full_data()
|
|
18
18
|
response = client.post(route, json=json)
|
|
@@ -27,7 +27,7 @@ def test_allowed_files(client):
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
def test_allowed_objects(client):
|
|
30
|
-
route = f"/allowed_objects"
|
|
30
|
+
route = f"/opengeodeweb_back/allowed_objects"
|
|
31
31
|
|
|
32
32
|
def get_full_data():
|
|
33
33
|
return {
|
|
@@ -49,14 +49,14 @@ def test_allowed_objects(client):
|
|
|
49
49
|
|
|
50
50
|
def test_upload_file(client, filename="test.og_brep"):
|
|
51
51
|
response = client.put(
|
|
52
|
-
f"/upload_file",
|
|
52
|
+
f"/opengeodeweb_back/upload_file",
|
|
53
53
|
data={"file": FileStorage(open(f"./tests/data/{filename}", "rb"))},
|
|
54
54
|
)
|
|
55
55
|
assert response.status_code == 201
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
def test_missing_files(client):
|
|
59
|
-
route = f"/missing_files"
|
|
59
|
+
route = f"/opengeodeweb_back/missing_files"
|
|
60
60
|
|
|
61
61
|
def get_full_data():
|
|
62
62
|
return {
|
|
@@ -79,7 +79,7 @@ def test_missing_files(client):
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
def test_geographic_coordinate_systems(client):
|
|
82
|
-
route = f"/geographic_coordinate_systems"
|
|
82
|
+
route = f"/opengeodeweb_back/geographic_coordinate_systems"
|
|
83
83
|
get_full_data = lambda: {"input_geode_object": "BRep"}
|
|
84
84
|
# Normal test with geode_object 'BRep'
|
|
85
85
|
response = client.post(route, json=get_full_data())
|
|
@@ -94,7 +94,7 @@ def test_geographic_coordinate_systems(client):
|
|
|
94
94
|
|
|
95
95
|
|
|
96
96
|
def test_inspect_file(client):
|
|
97
|
-
route = f"/inspect_file"
|
|
97
|
+
route = f"/opengeodeweb_back/inspect_file"
|
|
98
98
|
|
|
99
99
|
def get_full_data():
|
|
100
100
|
return {
|
|
@@ -115,7 +115,7 @@ def test_inspect_file(client):
|
|
|
115
115
|
|
|
116
116
|
|
|
117
117
|
def test_geode_objects_and_output_extensions(client):
|
|
118
|
-
route = "/geode_objects_and_output_extensions"
|
|
118
|
+
route = "/opengeodeweb_back/geode_objects_and_output_extensions"
|
|
119
119
|
|
|
120
120
|
def get_full_data():
|
|
121
121
|
return {
|
|
@@ -142,7 +142,7 @@ def test_geode_objects_and_output_extensions(client):
|
|
|
142
142
|
|
|
143
143
|
def test_save_viewable_file(client):
|
|
144
144
|
test_upload_file(client, filename="corbi.og_brep")
|
|
145
|
-
route = f"/save_viewable_file"
|
|
145
|
+
route = f"/opengeodeweb_back/save_viewable_file"
|
|
146
146
|
|
|
147
147
|
def get_full_data():
|
|
148
148
|
return {
|
|
@@ -181,7 +181,9 @@ def test_texture_coordinates(client, test_id):
|
|
|
181
181
|
os.makedirs(os.path.dirname(data_path), exist_ok=True)
|
|
182
182
|
shutil.copy("./tests/data/hat.vtp", data_path)
|
|
183
183
|
assert os.path.exists(data_path), f"File not found at {data_path}"
|
|
184
|
-
response = client.post(
|
|
184
|
+
response = client.post(
|
|
185
|
+
"/opengeodeweb_back/texture_coordinates", json={"id": data.id}
|
|
186
|
+
)
|
|
185
187
|
assert response.status_code == 200
|
|
186
188
|
texture_coordinates = response.json["texture_coordinates"]
|
|
187
189
|
assert type(texture_coordinates) is list
|
|
@@ -190,7 +192,7 @@ def test_texture_coordinates(client, test_id):
|
|
|
190
192
|
|
|
191
193
|
|
|
192
194
|
def test_vertex_attribute_names(client, test_id):
|
|
193
|
-
route = f"/vertex_attribute_names"
|
|
195
|
+
route = f"/opengeodeweb_back/vertex_attribute_names"
|
|
194
196
|
|
|
195
197
|
with client.application.app_context():
|
|
196
198
|
data = Data.create(geode_object="PolygonalSurface3D", input_file="test.vtp")
|
|
@@ -212,7 +214,7 @@ def test_vertex_attribute_names(client, test_id):
|
|
|
212
214
|
|
|
213
215
|
|
|
214
216
|
def test_polygon_attribute_names(client, test_id):
|
|
215
|
-
route = f"/polygon_attribute_names"
|
|
217
|
+
route = f"/opengeodeweb_back/polygon_attribute_names"
|
|
216
218
|
|
|
217
219
|
with client.application.app_context():
|
|
218
220
|
data = Data.create(geode_object="PolygonalSurface3D", input_file="test.vtp")
|
|
@@ -234,7 +236,7 @@ def test_polygon_attribute_names(client, test_id):
|
|
|
234
236
|
|
|
235
237
|
|
|
236
238
|
def test_polyhedron_attribute_names(client, test_id):
|
|
237
|
-
route = f"/polyhedron_attribute_names"
|
|
239
|
+
route = f"/opengeodeweb_back/polyhedron_attribute_names"
|
|
238
240
|
|
|
239
241
|
with client.application.app_context():
|
|
240
242
|
data = Data.create(geode_object="PolyhedralSolid3D", input_file="test.vtu")
|
|
@@ -257,7 +259,7 @@ def test_polyhedron_attribute_names(client, test_id):
|
|
|
257
259
|
|
|
258
260
|
|
|
259
261
|
def test_create_point(client):
|
|
260
|
-
route = f"/create_point"
|
|
262
|
+
route = f"/opengeodeweb_back/create_point"
|
|
261
263
|
get_full_data = lambda: {"title": "test_point", "x": 1, "y": 2, "z": 3}
|
|
262
264
|
|
|
263
265
|
# Normal test with all keys
|
|
@@ -10,7 +10,7 @@ import uuid
|
|
|
10
10
|
# Local application imports
|
|
11
11
|
from opengeodeweb_microservice.database.data import Data
|
|
12
12
|
from opengeodeweb_microservice.database.connection import get_session
|
|
13
|
-
from
|
|
13
|
+
from opengeodeweb_back import geode_functions, utils_functions
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def test_increment_request_counter(app_context):
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# This file is autogenerated by pip-compile with Python 3.12
|
|
3
|
-
# by the following command:
|
|
4
|
-
#
|
|
5
|
-
# pip-compile --output-file=./requirements.txt ./requirements-internal.in ./requirements.in
|
|
6
|
-
#
|
|
7
|
-
asgiref~=3.9
|
|
8
|
-
# via flask
|
|
9
|
-
blinker~=1.9
|
|
10
|
-
# via
|
|
11
|
-
# flask
|
|
12
|
-
# opengeodeweb-microservice
|
|
13
|
-
click~=8.3
|
|
14
|
-
# via
|
|
15
|
-
# flask
|
|
16
|
-
# opengeodeweb-microservice
|
|
17
|
-
fastjsonschema~=2.21
|
|
18
|
-
# via opengeodeweb-microservice
|
|
19
|
-
flask[async]~=3.1
|
|
20
|
-
# via
|
|
21
|
-
# -r requirements.in
|
|
22
|
-
# flask-cors
|
|
23
|
-
# flask-sqlalchemy
|
|
24
|
-
# opengeodeweb-microservice
|
|
25
|
-
flask-cors==6.0.1
|
|
26
|
-
# via -r requirements.in
|
|
27
|
-
flask-sqlalchemy==3.1.1
|
|
28
|
-
# via
|
|
29
|
-
# -r requirements.in
|
|
30
|
-
# opengeodeweb-microservice
|
|
31
|
-
geode-common==33.11.0
|
|
32
|
-
# via
|
|
33
|
-
# -r requirements.in
|
|
34
|
-
# geode-viewables
|
|
35
|
-
geode-viewables==3.3.0
|
|
36
|
-
# via -r requirements.in
|
|
37
|
-
greenlet~=3.2
|
|
38
|
-
# via
|
|
39
|
-
# opengeodeweb-microservice
|
|
40
|
-
# sqlalchemy
|
|
41
|
-
itsdangerous~=2.2
|
|
42
|
-
# via
|
|
43
|
-
# flask
|
|
44
|
-
# opengeodeweb-microservice
|
|
45
|
-
jinja2~=3.1
|
|
46
|
-
# via
|
|
47
|
-
# flask
|
|
48
|
-
# opengeodeweb-microservice
|
|
49
|
-
markupsafe~=3.0
|
|
50
|
-
# via
|
|
51
|
-
# flask
|
|
52
|
-
# jinja2
|
|
53
|
-
# opengeodeweb-microservice
|
|
54
|
-
# werkzeug
|
|
55
|
-
opengeode-core==15.27.4
|
|
56
|
-
# via
|
|
57
|
-
# -r requirements.in
|
|
58
|
-
# geode-common
|
|
59
|
-
# geode-viewables
|
|
60
|
-
# opengeode-geosciences
|
|
61
|
-
# opengeode-geosciencesio
|
|
62
|
-
# opengeode-inspector
|
|
63
|
-
# opengeode-io
|
|
64
|
-
opengeode-geosciences==9.4.1
|
|
65
|
-
# via
|
|
66
|
-
# -r requirements.in
|
|
67
|
-
# geode-viewables
|
|
68
|
-
# opengeode-geosciencesio
|
|
69
|
-
opengeode-geosciencesio==5.8.0
|
|
70
|
-
# via -r requirements.in
|
|
71
|
-
opengeode-inspector==6.8.1
|
|
72
|
-
# via -r requirements.in
|
|
73
|
-
opengeode-io==7.4.0
|
|
74
|
-
# via
|
|
75
|
-
# -r requirements.in
|
|
76
|
-
# geode-viewables
|
|
77
|
-
# opengeode-geosciencesio
|
|
78
|
-
opengeodeweb-microservice~=1.0,>=1.0.3
|
|
79
|
-
# via -r requirements-internal.in
|
|
80
|
-
sqlalchemy~=2.0
|
|
81
|
-
# via
|
|
82
|
-
# flask-sqlalchemy
|
|
83
|
-
# opengeodeweb-microservice
|
|
84
|
-
typing-extensions~=4.15
|
|
85
|
-
# via
|
|
86
|
-
# opengeodeweb-microservice
|
|
87
|
-
# sqlalchemy
|
|
88
|
-
werkzeug~=3.1
|
|
89
|
-
# via
|
|
90
|
-
# flask
|
|
91
|
-
# flask-cors
|
|
92
|
-
# opengeodeweb-microservice
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
asgiref~=3.9
|
|
2
|
-
blinker~=1.9
|
|
3
|
-
click~=8.3
|
|
4
|
-
fastjsonschema~=2.21
|
|
5
|
-
flask[async]~=3.1
|
|
6
|
-
flask-cors==6.0.1
|
|
7
|
-
flask-sqlalchemy==3.1.1
|
|
8
|
-
geode-common==33.11.0
|
|
9
|
-
geode-viewables==3.3.0
|
|
10
|
-
greenlet~=3.2
|
|
11
|
-
itsdangerous~=2.2
|
|
12
|
-
jinja2~=3.1
|
|
13
|
-
markupsafe~=3.0
|
|
14
|
-
opengeode-core==15.27.4
|
|
15
|
-
opengeode-geosciences==9.4.1
|
|
16
|
-
opengeode-geosciencesio==5.8.0
|
|
17
|
-
opengeode-inspector==6.8.1
|
|
18
|
-
opengeode-io==7.4.0
|
|
19
|
-
opengeodeweb-microservice>=1.0.3,~=1.0
|
|
20
|
-
sqlalchemy~=2.0
|
|
21
|
-
typing-extensions~=4.15
|
|
22
|
-
werkzeug~=3.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/geode_functions.py
RENAMED
|
File without changes
|
{opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/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
|
|
File without changes
|
{opengeodeweb_back-5.10.2 → opengeodeweb_back-5.10.3rc2}/src/opengeodeweb_back/test_utils.py
RENAMED
|
File without changes
|