Skip to content

Commit b1d53a4

Browse files
Merge pull request #45 from Geode-solutions/feat/is_saveable
feat(functions): add send_file function
2 parents 48a2a68 + 1948edd commit b1d53a4

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

src/opengeodeweb_back/geode_functions.py

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -151,27 +151,20 @@ def list_geode_objects(extension: str, key: str = None):
151151

152152

153153
def geode_objects_output_extensions(geode_object: str, data):
154-
return_list = []
155-
geode_object_dict = {}
156-
geode_object_dict["geode_object"] = geode_object
157-
158-
output = geode_object_output_extensions(geode_object)
159-
160-
extension_saveable_array = []
161-
for output_extension in output:
154+
geode_objects_output_extensions_dict = {}
155+
output_extensions = geode_object_output_extensions(geode_object)
156+
extensions_dict = {}
157+
for output_extension in output_extensions:
162158
bool_is_saveable = is_saveable(geode_object, data, f"test.{output_extension}")
163-
extension_saveable_array.append(
164-
{"extension": output_extension, "is_saveable": bool_is_saveable}
165-
)
166-
167-
geode_object_dict["outputs"] = extension_saveable_array
168-
169-
return_list.append(geode_object_dict)
159+
extensions_dict[output_extension] = {"is_saveable": bool_is_saveable}
160+
geode_objects_output_extensions_dict[geode_object] = extensions_dict
170161

171162
if "parent" in geode_object_value(geode_object).keys():
172-
parent_key = geode_object_value(geode_object)["parent"]
173-
return_list += geode_objects_output_extensions(parent_key, data)
174-
return return_list
163+
parent_geode_object = geode_object_value(geode_object)["parent"]
164+
geode_objects_output_extensions_dict.update(
165+
geode_objects_output_extensions(parent_geode_object, data)
166+
)
167+
return geode_objects_output_extensions_dict
175168

176169

177170
def versions(list_packages: list):
@@ -303,3 +296,28 @@ def create_coordinate_system(
303296
create_crs(
304297
geode_object, data, name, input_coordiante_system, output_coordiante_system
305298
)
299+
300+
301+
def send_file(upload_folder, saved_files, new_file_name):
302+
if len(saved_files) == 1:
303+
mimetype = "application/octet-binary"
304+
else:
305+
mimetype = "application/zip"
306+
new_file_name = strict_file_name + ".zip"
307+
with zipfile.ZipFile(os.path.join(upload_folder, new_file_name), "w") as zipObj:
308+
for saved_file_path in saved_files:
309+
zipObj.write(
310+
saved_file_path,
311+
os.path.basename(saved_file_path),
312+
)
313+
314+
response = flask.send_from_directory(
315+
directory=upload_folder,
316+
path=new_file_name,
317+
as_attachment=True,
318+
mimetype=mimetype,
319+
)
320+
response.headers["new-file-name"] = new_file_name
321+
response.headers["Access-Control-Expose-Headers"] = "new-file-name"
322+
323+
return response

0 commit comments

Comments
 (0)