11# Standard library imports
2- import base64
32import os
43import time
54import threading
65import uuid
6+ import zipfile
77
88# Third party imports
99import flask
1010import opengeode_geosciences as og_gs
1111import opengeode as og
1212import pkg_resources
13- import werkzeug
1413from jsonschema import validate
1514from jsonschema .exceptions import ValidationError
1615
@@ -34,6 +33,10 @@ def missing_files(geode_object: str, file_absolute_path: str):
3433 return geode_object_value (geode_object )["missing_files" ](file_absolute_path )
3534
3635
36+ def is_loadable (geode_object : str , file_absolute_path : str ):
37+ return geode_object_value (geode_object )["is_loadable" ](file_absolute_path )
38+
39+
3740def load (geode_object : str , file_absolute_path : str ):
3841 return geode_object_value (geode_object )["load" ](file_absolute_path )
3942
@@ -109,18 +112,26 @@ def geode_object_output_extensions(geode_object: str):
109112 return geode_object_output_list_creators
110113
111114
112- def list_input_extensions (key : str = None ):
113- extensions_list = []
115+ def filter_geode_objects (key : str = None ):
116+ geode_objects_filtered_list = []
114117 for geode_object , value in geode_objects_dict ().items ():
115- if key != None :
118+ if key != None and key != "" :
116119 if key in value :
117120 if type (value [key ]) == bool :
118- if value [key ] == True :
119- extensions_list += geode_object_input_extensions (geode_object )
121+ geode_objects_filtered_list .append (geode_object )
120122 else :
121- extensions_list += geode_object_input_extensions (geode_object )
123+ geode_objects_filtered_list . append (geode_object )
122124 else :
123- extensions_list += geode_object_input_extensions (geode_object )
125+ geode_objects_filtered_list .append (geode_object )
126+ geode_objects_filtered_list .sort ()
127+ return geode_objects_filtered_list
128+
129+
130+ def list_input_extensions (key : str = None ):
131+ extensions_list = []
132+ geode_objects_filtered_list = filter_geode_objects (key )
133+ for geode_object in geode_objects_filtered_list :
134+ extensions_list += geode_object_input_extensions (geode_object )
124135
125136 extensions_list = list (set (extensions_list ))
126137 extensions_list .sort ()
@@ -131,23 +142,19 @@ def has_creator(geode_object: str, extension: str):
131142 return input_factory (geode_object ).has_creator (extension )
132143
133144
134- def list_geode_objects (extension : str , key : str = None ):
135- geode_objects_list = []
136- for geode_object , value in geode_objects_dict ().items ():
137- if key != None :
138- if key in value :
139- if type (value [key ]) == bool :
140- if value [key ] == True :
141- if has_creator (geode_object , extension ):
142- geode_objects_list .append (geode_object )
143- elif has_creator (geode_object , extension ):
144- geode_objects_list .append (geode_object )
145- else :
146- if has_creator (geode_object , extension ):
147- geode_objects_list .append (geode_object )
145+ def list_geode_objects (
146+ file_absolute_path : str ,
147+ key : str = None ,
148+ ):
149+ return_dict = {}
150+ file_extension = extension_from_filename (os .path .basename (file_absolute_path ))
151+ geode_objects_filtered_list = filter_geode_objects (key )
148152
149- geode_objects_list .sort ()
150- return geode_objects_list
153+ for geode_object in geode_objects_filtered_list :
154+ if has_creator (geode_object , file_extension ):
155+ file_is_loadable = is_loadable (geode_object , file_absolute_path )
156+ return_dict [geode_object ] = {"is_loadable" : file_is_loadable }
157+ return return_dict
151158
152159
153160def geode_objects_output_extensions (geode_object : str , data ):
@@ -303,7 +310,7 @@ def send_file(upload_folder, saved_files, new_file_name):
303310 mimetype = "application/octet-binary"
304311 else :
305312 mimetype = "application/zip"
306- new_file_name = strict_file_name + ".zip"
313+ new_file_name = os . path . splitext ( new_file_name )[ 0 ] + ".zip"
307314 with zipfile .ZipFile (os .path .join (upload_folder , new_file_name ), "w" ) as zipObj :
308315 for saved_file_path in saved_files :
309316 zipObj .write (
0 commit comments