Skip to content

Commit 07ef565

Browse files
committed
wip
1 parent 4f65e9a commit 07ef565

17 files changed

+969
-641
lines changed

requirements.in

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
opengeode-core==15.29.2
2-
opengeode-io==7.4.2
3-
opengeode-inspector==6.8.2
4-
opengeode-geosciences==9.5.0
5-
opengeode-geosciencesio==5.8.1
1+
opengeode-core==15.30.2
2+
opengeode-io==7.4.6
3+
opengeode-inspector==6.8.6
4+
opengeode-geosciences==9.5.4
5+
opengeode-geosciencesio==5.8.6
66
geode-common==33.11.3
77
geode-viewables==3.3.2
88
flask[async]==3.1.2

requirements.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ markupsafe>=3
3131
# flask
3232
# jinja2
3333
# werkzeug
34-
opengeode-core==15.29.2
34+
opengeode-core==15.30.2
3535
# via
3636
# -r requirements.in
3737
# geode-common
@@ -40,16 +40,16 @@ opengeode-core==15.29.2
4040
# opengeode-geosciencesio
4141
# opengeode-inspector
4242
# opengeode-io
43-
opengeode-geosciences==9.5.0
43+
opengeode-geosciences==9.5.4
4444
# via
4545
# -r requirements.in
4646
# geode-viewables
4747
# opengeode-geosciencesio
48-
opengeode-geosciencesio==5.8.1
48+
opengeode-geosciencesio==5.8.6
4949
# via -r requirements.in
50-
opengeode-inspector==6.8.2
50+
opengeode-inspector==6.8.6
5151
# via -r requirements.in
52-
opengeode-io==7.4.2
52+
opengeode-io==7.4.6
5353
# via
5454
# -r requirements.in
5555
# geode-viewables

src/opengeodeweb_back/geode_functions.py

Lines changed: 79 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@
33

44
# Third party imports
55
import opengeode_geosciences as og_gs
6-
import opengeode as og
6+
import opengeode as og
77
import werkzeug
88
import flask
99
from typing import Any
1010

1111
# Local application imports
12-
from .geode_objects import geode_objects,GeodeType, GeodeObject, to_geode_type
12+
from .geode_objects import geode_objects
13+
from .geode_objects.geode_object import GeodeType, GeodeObject, to_geode_type
1314
from . import utils_functions
1415
from opengeodeweb_microservice.database.data import Data
1516
from opengeodeweb_microservice.database.connection import get_session
1617

18+
1719
def data_file_path(data_id: str, filename: str | None) -> str:
1820
data_folder_path = flask.current_app.config["DATA_FOLDER_PATH"]
1921
data_path = os.path.join(data_folder_path, data_id)
@@ -30,7 +32,9 @@ def load_data(data_id: str) -> GeodeObject:
3032
file_absolute_path = data_file_path(data_id, data_entry.native_file_name)
3133
print("Loading file: ", file_absolute_path)
3234
print("File exists: ", os.path.exists(file_absolute_path))
33-
return geode_objects[to_geode_type(data_entry.geode_object)].load(file_absolute_path)
35+
return geode_objects[to_geode_type(data_entry.geode_object)].load(
36+
file_absolute_path
37+
)
3438

3539

3640
def get_data_info(data_id: str) -> Data:
@@ -46,6 +50,31 @@ def upload_file_path(filename: str) -> str:
4650
return os.path.abspath(os.path.join(upload_folder, secure_filename))
4751

4852

53+
def geode_object_output_extensions(
54+
geode_object: GeodeObject,
55+
) -> dict[GeodeType, dict[str, bool]]:
56+
results: dict[GeodeType, dict[str, bool]] = {}
57+
for mixin_geode_object in geode_objects[geode_object.geode_type()].__mro__:
58+
output_extensions_method = getattr(
59+
mixin_geode_object, "output_extensions", None
60+
)
61+
if output_extensions_method is None:
62+
continue
63+
output_extensions = output_extensions_method.__func__(mixin_geode_object)
64+
if output_extensions is None:
65+
continue
66+
object_output_extensions: dict[str, bool] = {}
67+
is_saveable_method = getattr(mixin_geode_object, "is_saveable")
68+
for output_extension in output_extensions:
69+
bool_is_saveable = is_saveable_method(
70+
geode_object, f"test.{output_extension}"
71+
)
72+
object_output_extensions[output_extension] = bool_is_saveable
73+
if hasattr(mixin_geode_object, "geode_type"):
74+
results[mixin_geode_object.geode_type()] = object_output_extensions
75+
return results
76+
77+
4978
# def assign_crs(geode_type: GeodeType, data, crs_name: str, info):
5079
# builder = create_builder(geode_object, data)
5180
# geode_objects[geode_type].["crs"]["assign"](data, builder, crs_name, info)
@@ -69,154 +98,56 @@ def upload_file_path(filename: str) -> str:
6998
# )
7099

71100

72-
def filter_geode_objects(key: str | None = None)-> list[GeodeType]:
73-
filtered_geode_objects = []
74-
for geode_object, value in geode_objects.items():
75-
if key != None and key != "":
76-
if key in value:
77-
if type(value[key]) == bool:
78-
filtered_geode_objects.append(geode_object)
79-
else:
80-
filtered_geode_objects.append(geode_object)
81-
else:
82-
filtered_geode_objects.append(geode_object)
83-
filtered_geode_objects.sort()
84-
return filtered_geode_objects
85-
86-
87-
def list_input_extensions(key: str | None = None) -> list[str]:
88-
extensions_list = []
89-
for geode_object in filter_geode_objects(key):
90-
extensions_list += geode_object_input_extensions(geode_object)
91-
extensions_list = list(set(extensions_list))
92-
extensions_list.sort()
93-
return extensions_list
94-
95-
96-
def has_creator(geode_type: GeodeType, extension: str):
97-
return input_factory(geode_object).has_creator(extension)
98-
99-
100-
def list_geode_objects(
101-
file_absolute_path: str,
102-
key: str | None = None,
103-
):
104-
return_dict = {}
105-
file_extension = utils_functions.extension_from_filename(
106-
os.path.basename(file_absolute_path)
107-
)
108-
geode_objects_filtered_list = filter_geode_objects(key)
109-
for geode_object in geode_objects_filtered_list:
110-
if has_creator(geode_object, file_extension):
111-
loadability_score = is_loadable(geode_object, file_absolute_path)
112-
priority_score = object_priority(geode_object, file_absolute_path)
113-
return_dict[geode_object] = {
114-
"is_loadable": loadability_score,
115-
"object_priority": priority_score,
116-
}
117-
return return_dict
118-
119-
120-
def geode_objects_output_extensions(geode_type: GeodeType, data):
121-
geode_objects_output_extensions_dict = {}
122-
output_extensions = geode_object_output_extensions(geode_object)
123-
extensions_dict = {}
124-
for output_extension in output_extensions:
125-
bool_is_saveable = is_saveable(geode_object, data, f"test.{output_extension}")
126-
extensions_dict[output_extension] = {"is_saveable": bool_is_saveable}
127-
geode_objects_output_extensions_dict[geode_object] = extensions_dict
128-
129-
if "parent" in geode_objects[geode_type]..keys():
130-
parent_geode_object = geode_objects[geode_type].["parent"]
131-
geode_objects_output_extensions_dict.update(
132-
geode_objects_output_extensions(parent_geode_object, data)
133-
)
134-
return geode_objects_output_extensions_dict
135-
136-
137-
def get_inspector_children(obj):
138-
new_object = {}
139-
140-
if "inspection_type" in dir(obj):
141-
new_object["title"] = obj.inspection_type()
142-
new_object["nb_issues"] = 0
143-
new_object["children"] = []
144-
for child in dir(obj):
145-
if not child.startswith("__") and not child in [
146-
"inspection_type",
147-
"string",
148-
]:
149-
child_instance = obj.__getattribute__(child)
150-
child_object = get_inspector_children(child_instance)
151-
new_object["children"].append(child_object)
152-
new_object["nb_issues"] += child_object["nb_issues"]
153-
else:
154-
new_object["title"] = obj.description()
155-
nb_issues = obj.nb_issues()
156-
new_object["nb_issues"] = nb_issues
157-
if nb_issues > 0:
158-
issues = obj.string().split("\n")
159-
new_object["issues"] = issues
160-
return new_object
161-
162-
163-
def geographic_coordinate_systems(geode_type: GeodeType):
164-
if is_3D(geode_object):
165-
return og_gs.GeographicCoordinateSystem3D.geographic_coordinate_systems()
166-
else:
167-
return og_gs.GeographicCoordinateSystem2D.geographic_coordinate_systems()
168-
169-
170-
def geographic_coordinate_systems_info(geode_type: GeodeType, crs):
171-
if is_3D(geode_object):
172-
return og_gs.GeographicCoordinateSystemInfo3D(
173-
crs["authority"], crs["code"], crs["name"]
174-
)
175-
else:
176-
return og_gs.GeographicCoordinateSystemInfo2D(
177-
crs["authority"], crs["code"], crs["name"]
178-
)
179-
180-
181-
def coordinate_system(geode_type: GeodeType, coordinate_system):
182-
return og.CoordinateSystem2D(
183-
[
184-
og.Vector2D(
185-
og.Point2D(
186-
[coordinate_system["origin_x"], coordinate_system["origin_y"]]
187-
),
188-
og.Point2D(
189-
[coordinate_system["point_1_x"], coordinate_system["point_1_y"]]
190-
),
191-
),
192-
og.Vector2D(
193-
og.Point2D(
194-
[coordinate_system["origin_x"], coordinate_system["origin_y"]]
195-
),
196-
og.Point2D(
197-
[coordinate_system["point_2_x"], coordinate_system["point_2_y"]]
198-
),
199-
),
200-
],
201-
og.Point2D([coordinate_system["origin_x"], coordinate_system["origin_y"]]),
202-
)
101+
# def geographic_coordinate_systems_info(geode_type: GeodeType, crs):
102+
# if is_3D(geode_object):
103+
# return og_gs.GeographicCoordinateSystemInfo3D(
104+
# crs["authority"], crs["code"], crs["name"]
105+
# )
106+
# else:
107+
# return og_gs.GeographicCoordinateSystemInfo2D(
108+
# crs["authority"], crs["code"], crs["name"]
109+
# )
110+
111+
112+
# def coordinate_system(geode_type: GeodeType, coordinate_system):
113+
# return og.CoordinateSystem2D(
114+
# [
115+
# og.Vector2D(
116+
# og.Point2D(
117+
# [coordinate_system["origin_x"], coordinate_system["origin_y"]]
118+
# ),
119+
# og.Point2D(
120+
# [coordinate_system["point_1_x"], coordinate_system["point_1_y"]]
121+
# ),
122+
# ),
123+
# og.Vector2D(
124+
# og.Point2D(
125+
# [coordinate_system["origin_x"], coordinate_system["origin_y"]]
126+
# ),
127+
# og.Point2D(
128+
# [coordinate_system["point_2_x"], coordinate_system["point_2_y"]]
129+
# ),
130+
# ),
131+
# ],
132+
# og.Point2D([coordinate_system["origin_x"], coordinate_system["origin_y"]]),
133+
# )
203134

204135

205-
def assign_geographic_coordinate_system_info(geode_type: GeodeType, data, input_crs):
206-
info = geographic_coordinate_systems_info(geode_object, input_crs)
207-
assign_crs(geode_object, data, input_crs["name"], info)
136+
# def assign_geographic_coordinate_system_info(geode_type: GeodeType, data, input_crs):
137+
# info = geographic_coordinate_systems_info(geode_object, input_crs)
138+
# assign_crs(geode_object, data, input_crs["name"], info)
208139

209140

210-
def convert_geographic_coordinate_system_info(geode_type: GeodeType, data, output_crs):
211-
info = geographic_coordinate_systems_info(geode_object, output_crs)
212-
convert_crs(geode_object, data, output_crs["name"], info)
141+
# def convert_geographic_coordinate_system_info(geode_type: GeodeType, data, output_crs):
142+
# info = geographic_coordinate_systems_info(geode_object, output_crs)
143+
# convert_crs(geode_object, data, output_crs["name"], info)
213144

214145

215-
def create_coordinate_system(
216-
geode_type: GeodeType, data, name, input_coordinate_points, output_coordinate_points
217-
):
218-
input_coordiante_system = coordinate_system(geode_object, input_coordinate_points)
219-
output_coordiante_system = coordinate_system(geode_object, output_coordinate_points)
220-
create_crs(
221-
geode_object, data, name, input_coordiante_system, output_coordiante_system
222-
)
146+
# def create_coordinate_system(
147+
# geode_type: GeodeType, data, name, input_coordinate_points, output_coordinate_points
148+
# ):
149+
# input_coordiante_system = coordinate_system(geode_object, input_coordinate_points)
150+
# output_coordiante_system = coordinate_system(geode_object, output_coordinate_points)
151+
# create_crs(
152+
# geode_object, data, name, input_coordiante_system, output_coordiante_system
153+
# )

0 commit comments

Comments
 (0)