22import 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
77import werkzeug
88import flask
99from 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
1313from . import utils_functions
1414from opengeodeweb_microservice .database .data import Data
1515from 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
6936def 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
17887def 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
308215def 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