OpenGeodeWeb-Back 5.9.0rc2__tar.gz → 5.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of OpenGeodeWeb-Back might be problematic. Click here for more details.

Files changed (43) hide show
  1. {opengeodeweb_back-5.9.0rc2/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-5.10.0}/PKG-INFO +23 -24
  2. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/pyproject.toml +7 -23
  3. opengeodeweb_back-5.10.0/requirements.txt +93 -0
  4. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +23 -24
  5. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +1 -0
  6. opengeodeweb_back-5.10.0/src/OpenGeodeWeb_Back.egg-info/requires.txt +22 -0
  7. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/app_config.py +13 -2
  8. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/geode_functions.py +39 -17
  9. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/geode_objects.py +32 -7
  10. opengeodeweb_back-5.10.0/src/opengeodeweb_back/py.typed +1 -0
  11. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/blueprint_routes.py +24 -46
  12. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/models/blueprint_models.py +2 -8
  13. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/models/schemas/mesh_components.json +1 -11
  14. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -10
  15. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -10
  16. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +1 -11
  17. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -10
  18. opengeodeweb_back-5.10.0/src/opengeodeweb_back/utils_functions.py +276 -0
  19. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/tests/test_geode_functions.py +26 -10
  20. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/tests/test_models_routes.py +23 -15
  21. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/tests/test_routes.py +78 -111
  22. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/tests/test_utils_functions.py +62 -21
  23. opengeodeweb_back-5.9.0rc2/requirements.txt +0 -107
  24. opengeodeweb_back-5.9.0rc2/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -23
  25. opengeodeweb_back-5.9.0rc2/src/opengeodeweb_back/utils_functions.py +0 -227
  26. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/LICENSE +0 -0
  27. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/README.md +0 -0
  28. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/setup.cfg +0 -0
  29. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  30. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  31. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/__init__.py +0 -0
  32. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/models/schemas/vtm_component_indices.json +0 -0
  33. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  34. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  35. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/create_point.json +0 -0
  36. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  37. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  38. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
  39. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  40. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  41. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  42. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  43. {opengeodeweb_back-5.9.0rc2 → opengeodeweb_back-5.10.0}/src/opengeodeweb_back/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 5.9.0rc2
3
+ Version: 5.10.0
4
4
  Summary: OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem
5
5
  Author-email: Geode-solutions <team-web@geode-solutions.com>
6
6
  Project-URL: Homepage, https://github.com/Geode-solutions/OpenGeodeWeb-Back
@@ -11,29 +11,28 @@ 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.1
15
- Requires-Dist: blinker==1.9.0
16
- Requires-Dist: click==8.2.1
17
- Requires-Dist: fastjsonschema==2.21.1
18
- Requires-Dist: flask[async]==3.1.1
19
- Requires-Dist: flask-cors==6.0.1
20
- Requires-Dist: geode-background==9.4.0
21
- Requires-Dist: geode-common==33.9.0
22
- Requires-Dist: geode-conversion==6.4.0
23
- Requires-Dist: geode-explicit==6.3.0
24
- Requires-Dist: geode-implicit==4.1.1
25
- Requires-Dist: geode-numerics==6.3.0
26
- Requires-Dist: geode-simplex==9.6.0
27
- Requires-Dist: geode-viewables==3.2.0
28
- Requires-Dist: itsdangerous==2.2.0
29
- Requires-Dist: jinja2==3.1.6
30
- Requires-Dist: markupsafe==3.0.2
31
- Requires-Dist: opengeode-core==15.24.1
32
- Requires-Dist: opengeode-geosciences==9.2.1
33
- Requires-Dist: opengeode-geosciencesio==5.7.1
34
- Requires-Dist: opengeode-inspector==6.7.0
35
- Requires-Dist: opengeode-io==7.3.1
36
- Requires-Dist: werkzeug==3.1.3
14
+ Requires-Dist: asgiref~=3.0
15
+ Requires-Dist: blinker~=1.0
16
+ Requires-Dist: click~=8.0
17
+ Requires-Dist: fastjsonschema~=2.0
18
+ Requires-Dist: flask[async]~=3.0
19
+ Requires-Dist: flask-cors~=6.0
20
+ Requires-Dist: flask-sqlalchemy~=3.0
21
+ Requires-Dist: geode-common==33.11.0
22
+ Requires-Dist: geode-viewables==3.3.0
23
+ Requires-Dist: greenlet~=3.0
24
+ Requires-Dist: itsdangerous~=2.0
25
+ Requires-Dist: jinja2~=3.0
26
+ Requires-Dist: markupsafe~=3.0
27
+ Requires-Dist: opengeode-core==15.27.4
28
+ Requires-Dist: opengeode-geosciences==9.4.1
29
+ Requires-Dist: opengeode-geosciencesio==5.8.0
30
+ Requires-Dist: opengeode-inspector==6.8.1
31
+ Requires-Dist: opengeode-io==7.4.0
32
+ Requires-Dist: opengeodeweb-microservice~=1.0
33
+ Requires-Dist: sqlalchemy~=2.0
34
+ Requires-Dist: typing-extensions~=4.0
35
+ Requires-Dist: werkzeug==3.0.3
37
36
  Dynamic: license-file
38
37
 
39
38
  <h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
@@ -5,18 +5,16 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "OpenGeodeWeb-Back"
8
- version = "5.9.0-rc.2"
8
+ version = "5.10.0"
9
9
  dynamic = ["dependencies"]
10
- authors = [
11
- { name="Geode-solutions", email="team-web@geode-solutions.com" },
12
- ]
10
+ authors = [{ name = "Geode-solutions", email = "team-web@geode-solutions.com" }]
13
11
  description = "OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem"
14
12
  readme = "README.md"
15
13
  requires-python = ">=3.9, <3.13"
16
14
  classifiers = [
17
- "Programming Language :: Python :: 3",
18
- "License :: OSI Approved :: MIT License",
19
- "Operating System :: OS Independent",
15
+ "Programming Language :: Python :: 3",
16
+ "License :: OSI Approved :: MIT License",
17
+ "Operating System :: OS Independent",
20
18
  ]
21
19
 
22
20
  [project.urls]
@@ -24,7 +22,7 @@ classifiers = [
24
22
  "Bug Tracker" = "https://github.com/Geode-solutions/OpenGeodeWeb-Back/issues"
25
23
 
26
24
  [tool.setuptools.dynamic]
27
- dependencies = {file = ["requirements.txt"]}
25
+ dependencies = { file = ["requirements.txt"] }
28
26
 
29
27
  [tool.setuptools.packages.find]
30
28
  where = ["src"]
@@ -32,18 +30,4 @@ where = ["src"]
32
30
  [tool.setuptools.package-data]
33
31
  "opengeodeweb_back.routes.schemas" = ["*.json"]
34
32
  "opengeodeweb_back.routes.models.schemas" = ["*.json"]
35
-
36
- [tool.semantic_release]
37
- version_toml = [
38
- "pyproject.toml:project.version",
39
- ]
40
-
41
- [tool.semantic_release.remote.token]
42
- env = "GH_TOKEN"
43
-
44
- [tool.semantic_release.branches.master]
45
- match = "master"
46
-
47
- [tool.semantic_release.branches.next]
48
- match = "next"
49
- prerelease = true
33
+ opengeodeweb_microservice = ["py.typed"]
@@ -0,0 +1,93 @@
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.0
8
+ # via flask
9
+ blinker~=1.0
10
+ # via
11
+ # flask
12
+ # opengeodeweb-microservice
13
+ click~=8.0
14
+ # via
15
+ # flask
16
+ # opengeodeweb-microservice
17
+ fastjsonschema~=2.0
18
+ # via opengeodeweb-microservice
19
+ flask[async]~=3.0
20
+ # via
21
+ # -r requirements.in
22
+ # flask
23
+ # flask-cors
24
+ # flask-sqlalchemy
25
+ # opengeodeweb-microservice
26
+ flask-cors~=6.0
27
+ # via -r requirements.in
28
+ flask-sqlalchemy~=3.0
29
+ # via
30
+ # -r requirements.in
31
+ # opengeodeweb-microservice
32
+ geode-common==33.11.0
33
+ # via
34
+ # -r requirements.in
35
+ # geode-viewables
36
+ geode-viewables==3.3.0
37
+ # via -r requirements.in
38
+ greenlet~=3.0
39
+ # via
40
+ # opengeodeweb-microservice
41
+ # sqlalchemy
42
+ itsdangerous~=2.0
43
+ # via
44
+ # flask
45
+ # opengeodeweb-microservice
46
+ jinja2~=3.0
47
+ # via
48
+ # flask
49
+ # opengeodeweb-microservice
50
+ markupsafe~=3.0
51
+ # via
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
79
+ # via -r requirements-internal.in
80
+ sqlalchemy~=2.0
81
+ # via
82
+ # flask-sqlalchemy
83
+ # opengeodeweb-microservice
84
+ typing-extensions~=4.0
85
+ # via
86
+ # opengeodeweb-microservice
87
+ # sqlalchemy
88
+ werkzeug==3.0.3
89
+ # via
90
+ # -r requirements.in
91
+ # flask
92
+ # flask-cors
93
+ # opengeodeweb-microservice
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 5.9.0rc2
3
+ Version: 5.10.0
4
4
  Summary: OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem
5
5
  Author-email: Geode-solutions <team-web@geode-solutions.com>
6
6
  Project-URL: Homepage, https://github.com/Geode-solutions/OpenGeodeWeb-Back
@@ -11,29 +11,28 @@ 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.1
15
- Requires-Dist: blinker==1.9.0
16
- Requires-Dist: click==8.2.1
17
- Requires-Dist: fastjsonschema==2.21.1
18
- Requires-Dist: flask[async]==3.1.1
19
- Requires-Dist: flask-cors==6.0.1
20
- Requires-Dist: geode-background==9.4.0
21
- Requires-Dist: geode-common==33.9.0
22
- Requires-Dist: geode-conversion==6.4.0
23
- Requires-Dist: geode-explicit==6.3.0
24
- Requires-Dist: geode-implicit==4.1.1
25
- Requires-Dist: geode-numerics==6.3.0
26
- Requires-Dist: geode-simplex==9.6.0
27
- Requires-Dist: geode-viewables==3.2.0
28
- Requires-Dist: itsdangerous==2.2.0
29
- Requires-Dist: jinja2==3.1.6
30
- Requires-Dist: markupsafe==3.0.2
31
- Requires-Dist: opengeode-core==15.24.1
32
- Requires-Dist: opengeode-geosciences==9.2.1
33
- Requires-Dist: opengeode-geosciencesio==5.7.1
34
- Requires-Dist: opengeode-inspector==6.7.0
35
- Requires-Dist: opengeode-io==7.3.1
36
- Requires-Dist: werkzeug==3.1.3
14
+ Requires-Dist: asgiref~=3.0
15
+ Requires-Dist: blinker~=1.0
16
+ Requires-Dist: click~=8.0
17
+ Requires-Dist: fastjsonschema~=2.0
18
+ Requires-Dist: flask[async]~=3.0
19
+ Requires-Dist: flask-cors~=6.0
20
+ Requires-Dist: flask-sqlalchemy~=3.0
21
+ Requires-Dist: geode-common==33.11.0
22
+ Requires-Dist: geode-viewables==3.3.0
23
+ Requires-Dist: greenlet~=3.0
24
+ Requires-Dist: itsdangerous~=2.0
25
+ Requires-Dist: jinja2~=3.0
26
+ Requires-Dist: markupsafe~=3.0
27
+ Requires-Dist: opengeode-core==15.27.4
28
+ Requires-Dist: opengeode-geosciences==9.4.1
29
+ Requires-Dist: opengeode-geosciencesio==5.8.0
30
+ Requires-Dist: opengeode-inspector==6.8.1
31
+ Requires-Dist: opengeode-io==7.4.0
32
+ Requires-Dist: opengeodeweb-microservice~=1.0
33
+ Requires-Dist: sqlalchemy~=2.0
34
+ Requires-Dist: typing-extensions~=4.0
35
+ Requires-Dist: werkzeug==3.0.3
37
36
  Dynamic: license-file
38
37
 
39
38
  <h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
@@ -11,6 +11,7 @@ src/opengeodeweb_back/__init__.py
11
11
  src/opengeodeweb_back/app_config.py
12
12
  src/opengeodeweb_back/geode_functions.py
13
13
  src/opengeodeweb_back/geode_objects.py
14
+ src/opengeodeweb_back/py.typed
14
15
  src/opengeodeweb_back/test_utils.py
15
16
  src/opengeodeweb_back/utils_functions.py
16
17
  src/opengeodeweb_back/routes/blueprint_routes.py
@@ -0,0 +1,22 @@
1
+ asgiref~=3.0
2
+ blinker~=1.0
3
+ click~=8.0
4
+ fastjsonschema~=2.0
5
+ flask[async]~=3.0
6
+ flask-cors~=6.0
7
+ flask-sqlalchemy~=3.0
8
+ geode-common==33.11.0
9
+ geode-viewables==3.3.0
10
+ greenlet~=3.0
11
+ itsdangerous~=2.0
12
+ jinja2~=3.0
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
20
+ sqlalchemy~=2.0
21
+ typing-extensions~=4.0
22
+ werkzeug==3.0.3
@@ -4,6 +4,9 @@ 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"
7
10
 
8
11
 
9
12
  class Config(object):
@@ -15,6 +18,7 @@ class Config(object):
15
18
  REQUEST_COUNTER = 0
16
19
  LAST_REQUEST_TIME = time.time()
17
20
  LAST_PING_TIME = time.time()
21
+ SQLALCHEMY_TRACK_MODIFICATIONS = False
18
22
 
19
23
 
20
24
  class ProdConfig(Config):
@@ -22,7 +26,10 @@ class ProdConfig(Config):
22
26
  ORIGINS = ""
23
27
  MINUTES_BEFORE_TIMEOUT = "1"
24
28
  SECONDS_BETWEEN_SHUTDOWNS = "10"
25
- DATA_FOLDER_PATH = "/data/"
29
+ DATA_FOLDER_PATH = "/data"
30
+ SQLALCHEMY_DATABASE_URI = f"sqlite:///{os.path.abspath(
31
+ os.path.join(DATA_FOLDER_PATH, DATABASE_FILENAME)
32
+ )}"
26
33
 
27
34
 
28
35
  class DevConfig(Config):
@@ -30,4 +37,8 @@ class DevConfig(Config):
30
37
  ORIGINS = "*"
31
38
  MINUTES_BEFORE_TIMEOUT = "1"
32
39
  SECONDS_BETWEEN_SHUTDOWNS = "10"
33
- DATA_FOLDER_PATH = "./data/"
40
+ BASE_DIR = os.path.dirname(os.path.abspath(__file__))
41
+ 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
+ )}"
@@ -2,14 +2,17 @@
2
2
  import os
3
3
 
4
4
  # Third party imports
5
- import opengeode_geosciences as og_gs
6
- import opengeode as og
5
+ import opengeode_geosciences as og_gs # type: ignore
6
+ import opengeode as og # type: ignore
7
7
  import werkzeug
8
8
  import flask
9
+ from typing import Any
9
10
 
10
11
  # Local application imports
11
12
  from .geode_objects import geode_objects_dict
12
13
  from . import utils_functions
14
+ from opengeodeweb_microservice.database.data import Data
15
+ from opengeodeweb_microservice.database.connection import get_session
13
16
 
14
17
 
15
18
  def geode_object_value(geode_object: str):
@@ -32,29 +35,45 @@ def additional_files(geode_object: str, file_absolute_path: str):
32
35
  return geode_object_value(geode_object)["additional_files"](file_absolute_path)
33
36
 
34
37
 
35
- def is_loadable(geode_object: str, file_absolute_path: str):
36
- return geode_object_value(geode_object)["is_loadable"](file_absolute_path)
38
+ def is_loadable(geode_object: str, file_absolute_path: str) -> float:
39
+ percentage = geode_object_value(geode_object)["is_loadable"](file_absolute_path)
40
+ return percentage.value()
41
+
42
+
43
+ def object_priority(geode_object: str, file_absolute_path: str) -> int:
44
+ return geode_object_value(geode_object)["object_priority"](file_absolute_path)
37
45
 
38
46
 
39
47
  def load(geode_object: str, file_absolute_path: str):
40
48
  return geode_object_value(geode_object)["load"](file_absolute_path)
41
49
 
42
50
 
43
- def data_file_path(data_id: str, filename: str) -> str:
51
+ def data_file_path(data_id: str, filename: str = "") -> str:
44
52
  data_folder_path = flask.current_app.config["DATA_FOLDER_PATH"]
45
- return os.path.join(
46
- data_folder_path,
47
- data_id,
48
- werkzeug.utils.secure_filename(filename),
49
- )
53
+ if filename:
54
+ return os.path.join(data_folder_path, data_id, filename)
55
+ return os.path.join(data_folder_path, data_id)
56
+
50
57
 
58
+ def load_data(data_id: str) -> Any:
59
+ data_entry = Data.get(data_id)
60
+ if not data_entry:
61
+ flask.abort(404, f"Data with id {data_id} not found")
51
62
 
52
- def load_data(geode_object: str, data_id: str, filename: str):
53
- file_absolute_path = data_file_path(data_id, filename)
54
- return load(geode_object, file_absolute_path)
63
+ file_absolute_path = data_file_path(data_id, data_entry.native_file_name)
64
+ print("Loading file: ", file_absolute_path)
65
+ print("File exists: ", os.path.exists(file_absolute_path))
66
+ return load(data_entry.geode_object, file_absolute_path)
55
67
 
56
68
 
57
- def upload_file_path(filename):
69
+ def get_data_info(data_id: str) -> Data:
70
+ data_entry = Data.get(data_id)
71
+ if not data_entry:
72
+ flask.abort(404, f"Data with id {data_id} not found")
73
+ return data_entry
74
+
75
+
76
+ def upload_file_path(filename: str) -> str:
58
77
  upload_folder = flask.current_app.config["UPLOAD_FOLDER"]
59
78
  secure_filename = werkzeug.utils.secure_filename(filename)
60
79
  return os.path.abspath(os.path.join(upload_folder, secure_filename))
@@ -180,11 +199,14 @@ def list_geode_objects(
180
199
  os.path.basename(file_absolute_path)
181
200
  )
182
201
  geode_objects_filtered_list = filter_geode_objects(key)
183
-
184
202
  for geode_object in geode_objects_filtered_list:
185
203
  if has_creator(geode_object, file_extension):
186
- file_is_loadable = is_loadable(geode_object, file_absolute_path)
187
- return_dict[geode_object] = {"is_loadable": file_is_loadable}
204
+ loadability_score = is_loadable(geode_object, file_absolute_path)
205
+ priority_score = object_priority(geode_object, file_absolute_path)
206
+ return_dict[geode_object] = {
207
+ "is_loadable": loadability_score,
208
+ "object_priority": priority_score,
209
+ }
188
210
  return return_dict
189
211
 
190
212
 
@@ -1,12 +1,12 @@
1
1
  # Standard library imports
2
2
 
3
3
  # Third party imports
4
- import opengeode as og
5
- import opengeode_io as og_io
6
- import opengeode_inspector as og_inspector
7
- import opengeode_geosciences as og_gs
8
- import opengeode_geosciencesio as og_gs_io
9
- import geode_viewables as g_v
4
+ import opengeode as og # type: ignore
5
+ import opengeode_io as og_io # type: ignore
6
+ import opengeode_inspector as og_inspector # type: ignore
7
+ import opengeode_geosciences as og_gs # type: ignore
8
+ import opengeode_geosciencesio as og_gs_io # type: ignore
9
+ import geode_viewables as g_v # type: ignore
10
10
 
11
11
  # Local application imports
12
12
 
@@ -27,6 +27,7 @@ def geode_objects_dict():
27
27
  "output_factory": og.BRepOutputFactory,
28
28
  "additional_files": og.brep_additional_files,
29
29
  "is_loadable": og.is_brep_loadable,
30
+ "object_priority": og.brep_object_priority,
30
31
  "load": og.load_brep,
31
32
  "is_saveable": og.is_brep_saveable,
32
33
  "save": og.save_brep,
@@ -50,6 +51,7 @@ def geode_objects_dict():
50
51
  "output_factory": og_gs.CrossSectionOutputFactory,
51
52
  "additional_files": og_gs.cross_section_additional_files,
52
53
  "is_loadable": og_gs.is_cross_section_loadable,
54
+ "object_priority": og_gs.cross_section_object_priority,
53
55
  "load": og_gs.load_cross_section,
54
56
  "is_saveable": og_gs.is_cross_section_saveable,
55
57
  "save": og_gs.save_cross_section,
@@ -72,6 +74,7 @@ def geode_objects_dict():
72
74
  "output_factory": og.EdgedCurveOutputFactory2D,
73
75
  "additional_files": og.edged_curve_additional_files2D,
74
76
  "is_loadable": og.is_edged_curve_loadable2D,
77
+ "object_priority": og.edged_curve_object_priority2D,
75
78
  "load": og.load_edged_curve2D,
76
79
  "is_saveable": og.is_edged_curve_saveable2D,
77
80
  "save": og.save_edged_curve2D,
@@ -95,6 +98,7 @@ def geode_objects_dict():
95
98
  "output_factory": og.EdgedCurveOutputFactory3D,
96
99
  "additional_files": og.edged_curve_additional_files3D,
97
100
  "is_loadable": og.is_edged_curve_loadable3D,
101
+ "object_priority": og.edged_curve_object_priority3D,
98
102
  "load": og.load_edged_curve3D,
99
103
  "is_saveable": og.is_edged_curve_saveable3D,
100
104
  "save": og.save_edged_curve3D,
@@ -118,6 +122,7 @@ def geode_objects_dict():
118
122
  "output_factory": og.GraphOutputFactory,
119
123
  "additional_files": og.graph_additional_files,
120
124
  "is_loadable": og.is_graph_loadable,
125
+ "object_priority": og.graph_object_priority,
121
126
  "load": og.load_graph,
122
127
  "is_saveable": og.is_graph_saveable,
123
128
  "save": og.save_graph,
@@ -132,6 +137,7 @@ def geode_objects_dict():
132
137
  "output_factory": og.HybridSolidOutputFactory3D,
133
138
  "additional_files": og.hybrid_solid_additional_files3D,
134
139
  "is_loadable": og.is_hybrid_solid_loadable3D,
140
+ "object_priority": og.hybrid_solid_object_priority3D,
135
141
  "load": og.load_hybrid_solid3D,
136
142
  "is_saveable": og.is_hybrid_solid_saveable3D,
137
143
  "save": og.save_hybrid_solid3D,
@@ -156,6 +162,7 @@ def geode_objects_dict():
156
162
  "output_factory": og_gs.ImplicitCrossSectionOutputFactory,
157
163
  "additional_files": og_gs.implicit_cross_section_additional_files,
158
164
  "is_loadable": og_gs.is_implicit_cross_section_loadable,
165
+ "object_priority": og_gs.implicit_cross_section_object_priority,
159
166
  "load": og_gs.load_implicit_cross_section,
160
167
  "is_saveable": og_gs.is_implicit_cross_section_saveable,
161
168
  "save": og_gs.save_implicit_cross_section,
@@ -179,6 +186,7 @@ def geode_objects_dict():
179
186
  "output_factory": og_gs.ImplicitStructuralModelOutputFactory,
180
187
  "additional_files": og_gs.implicit_structural_model_additional_files,
181
188
  "is_loadable": og_gs.is_implicit_structural_model_loadable,
189
+ "object_priority": og_gs.implicit_structural_model_object_priority,
182
190
  "load": og_gs.load_implicit_structural_model,
183
191
  "is_saveable": og_gs.is_implicit_structural_model_saveable,
184
192
  "save": og_gs.save_implicit_structural_model,
@@ -201,6 +209,7 @@ def geode_objects_dict():
201
209
  "output_factory": og.LightRegularGridOutputFactory2D,
202
210
  "additional_files": og.light_regular_grid_additional_files2D,
203
211
  "is_loadable": og.is_light_regular_grid_loadable2D,
212
+ "object_priority": og.light_regular_grid_object_priority2D,
204
213
  "load": og.load_light_regular_grid2D,
205
214
  "is_saveable": og.is_light_regular_grid_saveable2D,
206
215
  "save": og.save_light_regular_grid2D,
@@ -208,7 +217,7 @@ def geode_objects_dict():
208
217
  "elements": [points, polygons],
209
218
  "is_3D": False,
210
219
  "is_viewable": True,
211
- "save_viewable": g_v.save_light_viewable_light_regular_grid2D,
220
+ "save_viewable": g_v.save_viewable_light_regular_grid2D,
212
221
  "save_light_viewable": g_v.save_light_viewable_light_regular_grid2D,
213
222
  },
214
223
  "LightRegularGrid3D": {
@@ -217,6 +226,7 @@ def geode_objects_dict():
217
226
  "output_factory": og.LightRegularGridOutputFactory3D,
218
227
  "additional_files": og.light_regular_grid_additional_files3D,
219
228
  "is_loadable": og.is_light_regular_grid_loadable3D,
229
+ "object_priority": og.light_regular_grid_object_priority3D,
220
230
  "load": og.load_light_regular_grid3D,
221
231
  "is_saveable": og.is_light_regular_grid_saveable3D,
222
232
  "save": og.save_light_regular_grid3D,
@@ -233,6 +243,7 @@ def geode_objects_dict():
233
243
  "output_factory": og.PointSetOutputFactory2D,
234
244
  "additional_files": og.point_set_additional_files2D,
235
245
  "is_loadable": og.is_point_set_loadable2D,
246
+ "object_priority": og.point_set_object_priority2D,
236
247
  "load": og.load_point_set2D,
237
248
  "is_saveable": og.is_point_set_saveable2D,
238
249
  "save": og.save_point_set2D,
@@ -256,6 +267,7 @@ def geode_objects_dict():
256
267
  "output_factory": og.PointSetOutputFactory3D,
257
268
  "additional_files": og.point_set_additional_files3D,
258
269
  "is_loadable": og.is_point_set_loadable3D,
270
+ "object_priority": og.point_set_object_priority3D,
259
271
  "load": og.load_point_set3D,
260
272
  "is_saveable": og.is_point_set_saveable3D,
261
273
  "save": og.save_point_set3D,
@@ -279,6 +291,7 @@ def geode_objects_dict():
279
291
  "output_factory": og.PolygonalSurfaceOutputFactory2D,
280
292
  "additional_files": og.polygonal_surface_additional_files2D,
281
293
  "is_loadable": og.is_polygonal_surface_loadable2D,
294
+ "object_priority": og.polygonal_surface_object_priority2D,
282
295
  "load": og.load_polygonal_surface2D,
283
296
  "is_saveable": og.is_polygonal_surface_saveable2D,
284
297
  "save": og.save_polygonal_surface2D,
@@ -302,6 +315,7 @@ def geode_objects_dict():
302
315
  "output_factory": og.PolygonalSurfaceOutputFactory3D,
303
316
  "additional_files": og.polygonal_surface_additional_files3D,
304
317
  "is_loadable": og.is_polygonal_surface_loadable3D,
318
+ "object_priority": og.polygonal_surface_object_priority3D,
305
319
  "load": og.load_polygonal_surface3D,
306
320
  "is_saveable": og.is_polygonal_surface_saveable3D,
307
321
  "save": og.save_polygonal_surface3D,
@@ -325,6 +339,7 @@ def geode_objects_dict():
325
339
  "output_factory": og.PolyhedralSolidOutputFactory3D,
326
340
  "additional_files": og.polyhedral_solid_additional_files3D,
327
341
  "is_loadable": og.is_polyhedral_solid_loadable3D,
342
+ "object_priority": og.polyhedral_solid_object_priority3D,
328
343
  "load": og.load_polyhedral_solid3D,
329
344
  "is_saveable": og.is_polyhedral_solid_saveable3D,
330
345
  "save": og.save_polyhedral_solid3D,
@@ -348,6 +363,7 @@ def geode_objects_dict():
348
363
  "output_factory": og.RasterImageOutputFactory2D,
349
364
  "additional_files": og.raster_image_additional_files2D,
350
365
  "is_loadable": og.is_raster_image_loadable2D,
366
+ "object_priority": og.raster_image_object_priority2D,
351
367
  "load": og.load_raster_image2D,
352
368
  "is_saveable": og.is_raster_image_saveable2D,
353
369
  "save": og.save_raster_image2D,
@@ -362,6 +378,7 @@ def geode_objects_dict():
362
378
  "output_factory": og.RasterImageOutputFactory3D,
363
379
  "additional_files": og.raster_image_additional_files3D,
364
380
  "is_loadable": og.is_raster_image_loadable3D,
381
+ "object_priority": og.raster_image_object_priority3D,
365
382
  "load": og.load_raster_image3D,
366
383
  "is_saveable": og.is_raster_image_saveable3D,
367
384
  "save": og.save_raster_image3D,
@@ -376,6 +393,7 @@ def geode_objects_dict():
376
393
  "output_factory": og.RegularGridOutputFactory2D,
377
394
  "additional_files": og.regular_grid_additional_files2D,
378
395
  "is_loadable": og.is_regular_grid_loadable2D,
396
+ "object_priority": og.regular_grid_object_priority2D,
379
397
  "load": og.load_regular_grid2D,
380
398
  "is_saveable": og.is_regular_grid_saveable2D,
381
399
  "save": og.save_regular_grid2D,
@@ -398,6 +416,7 @@ def geode_objects_dict():
398
416
  "output_factory": og.RegularGridOutputFactory3D,
399
417
  "additional_files": og.regular_grid_additional_files3D,
400
418
  "is_loadable": og.is_regular_grid_loadable3D,
419
+ "object_priority": og.regular_grid_object_priority3D,
401
420
  "load": og.load_regular_grid3D,
402
421
  "is_saveable": og.is_regular_grid_saveable3D,
403
422
  "save": og.save_regular_grid3D,
@@ -420,6 +439,7 @@ def geode_objects_dict():
420
439
  "output_factory": og.SectionOutputFactory,
421
440
  "additional_files": og.section_additional_files,
422
441
  "is_loadable": og.is_section_loadable,
442
+ "object_priority": og.section_object_priority,
423
443
  "load": og.load_section,
424
444
  "is_saveable": og.is_section_saveable,
425
445
  "save": og.save_section,
@@ -443,6 +463,7 @@ def geode_objects_dict():
443
463
  "output_factory": og_gs.StructuralModelOutputFactory,
444
464
  "additional_files": og_gs.structural_model_additional_files,
445
465
  "is_loadable": og_gs.is_structural_model_loadable,
466
+ "object_priority": og_gs.structural_model_object_priority,
446
467
  "load": og_gs.load_structural_model,
447
468
  "is_saveable": og_gs.is_structural_model_saveable,
448
469
  "save": og_gs.save_structural_model,
@@ -465,6 +486,7 @@ def geode_objects_dict():
465
486
  "output_factory": og.TetrahedralSolidOutputFactory3D,
466
487
  "additional_files": og.tetrahedral_solid_additional_files3D,
467
488
  "is_loadable": og.is_tetrahedral_solid_loadable3D,
489
+ "object_priority": og.tetrahedral_solid_object_priority3D,
468
490
  "load": og.load_tetrahedral_solid3D,
469
491
  "is_saveable": og.is_tetrahedral_solid_saveable3D,
470
492
  "save": og.save_tetrahedral_solid3D,
@@ -488,6 +510,7 @@ def geode_objects_dict():
488
510
  "output_factory": og.TriangulatedSurfaceOutputFactory2D,
489
511
  "additional_files": og.triangulated_surface_additional_files2D,
490
512
  "is_loadable": og.is_triangulated_surface_loadable2D,
513
+ "object_priority": og.triangulated_surface_object_priority2D,
491
514
  "load": og.load_triangulated_surface2D,
492
515
  "is_saveable": og.is_triangulated_surface_saveable2D,
493
516
  "save": og.save_triangulated_surface2D,
@@ -511,6 +534,7 @@ def geode_objects_dict():
511
534
  "output_factory": og.TriangulatedSurfaceOutputFactory3D,
512
535
  "additional_files": og.triangulated_surface_additional_files3D,
513
536
  "is_loadable": og.is_triangulated_surface_loadable3D,
537
+ "object_priority": og.triangulated_surface_object_priority3D,
514
538
  "load": og.load_triangulated_surface3D,
515
539
  "is_saveable": og.is_triangulated_surface_saveable3D,
516
540
  "save": og.save_triangulated_surface3D,
@@ -534,6 +558,7 @@ def geode_objects_dict():
534
558
  "output_factory": og.VertexSetOutputFactory,
535
559
  "additional_files": og.vertex_set_additional_files,
536
560
  "is_loadable": og.is_vertex_set_loadable,
561
+ "object_priority": og.vertex_set_object_priority,
537
562
  "load": og.load_vertex_set,
538
563
  "is_saveable": og.is_vertex_set_saveable,
539
564
  "save": og.save_vertex_set,