88import flask
99import werkzeug
1010import zipfile
11- import glob
1211from opengeodeweb_microservice .schemas import get_schemas_dict
1312
1413# Local application imports
@@ -292,14 +291,7 @@ def export_project() -> flask.Response:
292291 export_zip_path = os .path .join (project_folder , filename )
293292
294293 with get_session () as session :
295- entries = [
296- {
297- "id" : entry .id ,
298- "input_file" : entry .input_file ,
299- "additional_files" : entry .additional_files ,
300- }
301- for entry in session .query (Data ).all ()
302- ]
294+ rows = session .query (Data .id , Data .input_file , Data .additional_files ).all ()
303295
304296 with zipfile .ZipFile (
305297 export_zip_path , "w" , compression = zipfile .ZIP_DEFLATED
@@ -308,19 +300,18 @@ def export_project() -> flask.Response:
308300 if os .path .isfile (database_root_path ):
309301 zip_file .write (database_root_path , "project.db" )
310302
311- for entry in entries :
312- base_dir = os .path .join (project_folder , entry [ "id" ] )
303+ for data_id , input_file , additional_files in rows :
304+ base_dir = os .path .join (project_folder , data_id )
313305
314- input_file = entry ["input_file" ]
315- if input_file :
316- in_path = os .path .join (base_dir , input_file )
317- if os .path .isfile (in_path ):
318- zip_file .write (in_path , os .path .join (entry ["id" ], input_file ))
306+ if isinstance (input_file , str ):
307+ input_path = os .path .join (base_dir , input_file )
308+ if os .path .isfile (input_path ):
309+ zip_file .write (input_path , os .path .join (data_id , input_file ))
319310
320- for relative_path in entry [ " additional_files" ] or []:
321- add_path = os .path .join (base_dir , relative_path )
322- if os .path .isfile (add_path ):
323- zip_file .write (add_path , os .path .join (entry [ "id" ] , relative_path ))
311+ for relative_path in ( additional_files or []) :
312+ additional_path = os .path .join (base_dir , relative_path )
313+ if os .path .isfile (additional_path ):
314+ zip_file .write (additional_path , os .path .join (data_id , relative_path ))
324315
325316 zip_file .writestr ("snapshot.json" , flask .json .dumps (params .snapshot ))
326317
@@ -338,6 +329,7 @@ def import_project() -> flask.Response:
338329 flask .abort (400 , "No zip file provided under 'file'" )
339330
340331 zip_file = flask .request .files ["file" ]
332+ assert zip_file .filename is not None
341333 filename = werkzeug .utils .secure_filename (os .path .basename (zip_file .filename ))
342334 if not filename .lower ().endswith (".zip" ):
343335 flask .abort (400 , "Uploaded file must be a .zip" )
0 commit comments