Skip to content

Commit 4f65e9a

Browse files
committed
wip
1 parent 69ffcbf commit 4f65e9a

File tree

10 files changed

+736
-703
lines changed

10 files changed

+736
-703
lines changed

.vscode/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
"--config-file=mypy.ini"
99
],
1010
"mypy-type-checker.interpreter": [
11-
"${workspaceFolder}/venv/bin/python"
11+
"${workspaceFolder}/../../.venv/bin/python"
1212
]
1313
}

src/opengeodeweb_back/geode_functions.py

Lines changed: 46 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -2,68 +2,35 @@
22
import os
33

44
# Third party imports
5-
import opengeode_geosciences as og_gs # type: ignore
6-
import opengeode as og # type: ignore
5+
import opengeode_geosciences as og_gs
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_dict
12+
from .geode_objects import geode_objects,GeodeType, GeodeObject, to_geode_type
1313
from . import utils_functions
1414
from opengeodeweb_microservice.database.data import Data
1515
from opengeodeweb_microservice.database.connection import get_session
1616

17-
18-
def geode_object_value(geode_object: str):
19-
return geode_objects_dict()[geode_object]
20-
21-
22-
def geode_object_class(geode_object: str):
23-
return geode_object_value(geode_object)["class"]
24-
25-
26-
def input_factory(geode_object: str):
27-
return geode_object_value(geode_object)["input_factory"]
28-
29-
30-
def output_factory(geode_object: str):
31-
return geode_object_value(geode_object)["output_factory"]
32-
33-
34-
def additional_files(geode_object: str, file_absolute_path: str):
35-
return geode_object_value(geode_object)["additional_files"](file_absolute_path)
36-
37-
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)
45-
46-
47-
def load(geode_object: str, file_absolute_path: str):
48-
return geode_object_value(geode_object)["load"](file_absolute_path)
49-
50-
51-
def data_file_path(data_id: str, filename: str = "") -> str:
17+
def data_file_path(data_id: str, filename: str | None) -> str:
5218
data_folder_path = flask.current_app.config["DATA_FOLDER_PATH"]
53-
if filename:
54-
return os.path.join(data_folder_path, data_id, filename)
55-
return os.path.join(data_folder_path, data_id)
19+
data_path = os.path.join(data_folder_path, data_id)
20+
if filename is not None:
21+
return os.path.join(data_path, filename)
22+
return data_path
5623

5724

58-
def load_data(data_id: str) -> Any:
25+
def load_data(data_id: str) -> GeodeObject:
5926
data_entry = Data.get(data_id)
6027
if not data_entry:
6128
flask.abort(404, f"Data with id {data_id} not found")
6229

6330
file_absolute_path = data_file_path(data_id, data_entry.native_file_name)
6431
print("Loading file: ", file_absolute_path)
6532
print("File exists: ", os.path.exists(file_absolute_path))
66-
return load(data_entry.geode_object, file_absolute_path)
33+
return geode_objects[to_geode_type(data_entry.geode_object)].load(file_absolute_path)
6734

6835

6936
def get_data_info(data_id: str) -> Data:
@@ -79,114 +46,54 @@ def upload_file_path(filename: str) -> str:
7946
return os.path.abspath(os.path.join(upload_folder, secure_filename))
8047

8148

82-
def is_saveable(geode_object: str, data, filename: str):
83-
return geode_object_value(geode_object)["is_saveable"](data, filename)
84-
85-
86-
def save(geode_object: str, data, folder_absolute_path: str, filename: str):
87-
return geode_object_value(geode_object)["save"](
88-
data, os.path.join(folder_absolute_path, filename)
89-
)
90-
91-
92-
def create_builder(geode_object: str, data):
93-
return geode_object_value(geode_object)["builder"](data)
49+
# def assign_crs(geode_type: GeodeType, data, crs_name: str, info):
50+
# builder = create_builder(geode_object, data)
51+
# geode_objects[geode_type].["crs"]["assign"](data, builder, crs_name, info)
9452

9553

96-
def assign_crs(geode_object: str, data, crs_name: str, info):
97-
builder = create_builder(geode_object, data)
98-
geode_object_value(geode_object)["crs"]["assign"](data, builder, crs_name, info)
54+
# def convert_crs(geode_type: GeodeType, data, crs_name: str, info):
55+
# builder = create_builder(geode_object, data)
56+
# geode_objects[geode_type].["crs"]["convert"](data, builder, crs_name, info)
9957

10058

101-
def convert_crs(geode_object: str, data, crs_name: str, info):
102-
builder = create_builder(geode_object, data)
103-
geode_object_value(geode_object)["crs"]["convert"](data, builder, crs_name, info)
59+
# def create_crs(
60+
# geode_type: GeodeType,
61+
# data,
62+
# name: str,
63+
# input_coordiante_system,
64+
# output_coordiante_system,
65+
# ):
66+
# builder = create_builder(geode_object, data)
67+
# geode_objects[geode_type].["crs"]["create"](
68+
# data, builder, name, input_coordiante_system, output_coordiante_system
69+
# )
10470

10571

106-
def create_crs(
107-
geode_object: str,
108-
data,
109-
name: str,
110-
input_coordiante_system,
111-
output_coordiante_system,
112-
):
113-
builder = create_builder(geode_object, data)
114-
geode_object_value(geode_object)["crs"]["create"](
115-
data, builder, name, input_coordiante_system, output_coordiante_system
116-
)
117-
118-
119-
def get_object_type(geode_object: str):
120-
return geode_object_value(geode_object)["object_type"]
121-
122-
123-
def get_elements(geode_object: str):
124-
return geode_object_value(geode_object)["elements"]
125-
126-
127-
def is_3D(geode_object: str):
128-
return geode_object_value(geode_object)["is_3D"]
129-
130-
131-
def is_viewable(geode_object: str):
132-
return geode_object_value(geode_object)["is_viewable"]
133-
134-
135-
def inspect(geode_object: str, data):
136-
return geode_object_value(geode_object)["inspector"](data)
137-
138-
139-
def save_viewable(geode_object: str, data, folder_absolute_path: str, id: str):
140-
return geode_object_value(geode_object)["save_viewable"](
141-
data, os.path.join(folder_absolute_path, id)
142-
)
143-
144-
145-
def save_light_viewable(geode_object: str, data, folder_absolute_path: str, id: str):
146-
return geode_object_value(geode_object)["save_light_viewable"](
147-
data, os.path.join(folder_absolute_path, id)
148-
)
149-
150-
151-
def geode_object_input_extensions(geode_object: str):
152-
geode_object_input_list_creators = input_factory(geode_object).list_creators()
153-
geode_object_input_list_creators.sort()
154-
return geode_object_input_list_creators
155-
156-
157-
def geode_object_output_extensions(geode_object: str):
158-
geode_object_output_list_creators = output_factory(geode_object).list_creators()
159-
geode_object_output_list_creators.sort()
160-
return geode_object_output_list_creators
161-
162-
163-
def filter_geode_objects(key: str = None):
164-
geode_objects_filtered_list = []
165-
for geode_object, value in geode_objects_dict().items():
72+
def filter_geode_objects(key: str | None = None)-> list[GeodeType]:
73+
filtered_geode_objects = []
74+
for geode_object, value in geode_objects.items():
16675
if key != None and key != "":
16776
if key in value:
16877
if type(value[key]) == bool:
169-
geode_objects_filtered_list.append(geode_object)
78+
filtered_geode_objects.append(geode_object)
17079
else:
171-
geode_objects_filtered_list.append(geode_object)
80+
filtered_geode_objects.append(geode_object)
17281
else:
173-
geode_objects_filtered_list.append(geode_object)
174-
geode_objects_filtered_list.sort()
175-
return geode_objects_filtered_list
82+
filtered_geode_objects.append(geode_object)
83+
filtered_geode_objects.sort()
84+
return filtered_geode_objects
17685

17786

17887
def list_input_extensions(key: str | None = None) -> list[str]:
17988
extensions_list = []
180-
geode_objects_filtered_list = filter_geode_objects(key)
181-
for geode_object in geode_objects_filtered_list:
89+
for geode_object in filter_geode_objects(key):
18290
extensions_list += geode_object_input_extensions(geode_object)
183-
18491
extensions_list = list(set(extensions_list))
18592
extensions_list.sort()
18693
return extensions_list
18794

18895

189-
def has_creator(geode_object: str, extension: str):
96+
def has_creator(geode_type: GeodeType, extension: str):
19097
return input_factory(geode_object).has_creator(extension)
19198

19299

@@ -210,7 +117,7 @@ def list_geode_objects(
210117
return return_dict
211118

212119

213-
def geode_objects_output_extensions(geode_object: str, data):
120+
def geode_objects_output_extensions(geode_type: GeodeType, data):
214121
geode_objects_output_extensions_dict = {}
215122
output_extensions = geode_object_output_extensions(geode_object)
216123
extensions_dict = {}
@@ -219,8 +126,8 @@ def geode_objects_output_extensions(geode_object: str, data):
219126
extensions_dict[output_extension] = {"is_saveable": bool_is_saveable}
220127
geode_objects_output_extensions_dict[geode_object] = extensions_dict
221128

222-
if "parent" in geode_object_value(geode_object).keys():
223-
parent_geode_object = geode_object_value(geode_object)["parent"]
129+
if "parent" in geode_objects[geode_type]..keys():
130+
parent_geode_object = geode_objects[geode_type].["parent"]
224131
geode_objects_output_extensions_dict.update(
225132
geode_objects_output_extensions(parent_geode_object, data)
226133
)
@@ -253,14 +160,14 @@ def get_inspector_children(obj):
253160
return new_object
254161

255162

256-
def geographic_coordinate_systems(geode_object: str):
163+
def geographic_coordinate_systems(geode_type: GeodeType):
257164
if is_3D(geode_object):
258165
return og_gs.GeographicCoordinateSystem3D.geographic_coordinate_systems()
259166
else:
260167
return og_gs.GeographicCoordinateSystem2D.geographic_coordinate_systems()
261168

262169

263-
def geographic_coordinate_systems_info(geode_object: str, crs):
170+
def geographic_coordinate_systems_info(geode_type: GeodeType, crs):
264171
if is_3D(geode_object):
265172
return og_gs.GeographicCoordinateSystemInfo3D(
266173
crs["authority"], crs["code"], crs["name"]
@@ -271,7 +178,7 @@ def geographic_coordinate_systems_info(geode_object: str, crs):
271178
)
272179

273180

274-
def coordinate_system(geode_object: str, coordinate_system):
181+
def coordinate_system(geode_type: GeodeType, coordinate_system):
275182
return og.CoordinateSystem2D(
276183
[
277184
og.Vector2D(
@@ -295,18 +202,18 @@ def coordinate_system(geode_object: str, coordinate_system):
295202
)
296203

297204

298-
def assign_geographic_coordinate_system_info(geode_object: str, data, input_crs):
205+
def assign_geographic_coordinate_system_info(geode_type: GeodeType, data, input_crs):
299206
info = geographic_coordinate_systems_info(geode_object, input_crs)
300207
assign_crs(geode_object, data, input_crs["name"], info)
301208

302209

303-
def convert_geographic_coordinate_system_info(geode_object: str, data, output_crs):
210+
def convert_geographic_coordinate_system_info(geode_type: GeodeType, data, output_crs):
304211
info = geographic_coordinate_systems_info(geode_object, output_crs)
305212
convert_crs(geode_object, data, output_crs["name"], info)
306213

307214

308215
def create_coordinate_system(
309-
geode_object: str, data, name, input_coordinate_points, output_coordinate_points
216+
geode_type: GeodeType, data, name, input_coordinate_points, output_coordinate_points
310217
):
311218
input_coordiante_system = coordinate_system(geode_object, input_coordinate_points)
312219
output_coordiante_system = coordinate_system(geode_object, output_coordinate_points)

0 commit comments

Comments
 (0)