@@ -219,13 +219,13 @@ def process_collection_descendants(collection, headers_v1,headers_v2, v2_parent_
219219 print (f"Now we need to add the sub folders of this dataset" )
220220 # TODO get DATASET FOLDERS HERE FROM v1
221221 process_dataset_folders (dataset , headers_v1 , headers_v2 , new_folder ['id' ], v2_dataset_id )
222- process_dataset_files (dataset , headers_v1 , headers_v2 , new_folder ['id' ], v2_dataset_id )
222+ process_dataset_files (dataset , headers_v1 , headers_v2 , 'folder' , new_folder ['id' ], v2_dataset_id )
223223 else :
224224 print (f"Parent is a folder" )
225225 new_folder = create_folder_if_not_exists_or_get (dataset ["name" ], v2_parent_id , v2_dataset_id , headers_v2 )
226226 # TODO GET DATASET FOLDERS HERE FROM v1
227227 process_dataset_folders (dataset , headers_v1 , headers_v2 , new_folder ['id' ], v2_dataset_id )
228- process_dataset_files (dataset , headers_v1 , headers_v2 , new_folder ['id' ], v2_dataset_id )
228+ process_dataset_files (dataset , headers_v1 , headers_v2 , 'folder' , new_folder ['id' ], v2_dataset_id )
229229
230230
231231
@@ -235,10 +235,40 @@ def process_dataset_folders(dataset, headers_v1, headers_v2, parent_type, parent
235235 folder_json = folder_response .json ()
236236 print (f"Got dataset folders" )
237237
238- def process_dataset_files (dataset , headers_v1 , headers_v2 , parent_type , parent_id ):
238+ def get_v1_dataset_folders (dataset , headers_v1 , headers_v2 , parent_type , parent_id ):
239+ folder_endpoint = f"{ CLOWDER_V1 } /api/datasets/{ dataset ['id' ]} /folders"
240+ folder_response = requests .get (folder_endpoint , headers = headers_v1 )
241+ folder_json = folder_response .json ()
242+ return folder_json
243+
244+ def process_dataset_files (dataset , headers_v1 , headers_v2 , parent_type , parent_id , dataset_v2_id ):
245+ dataset_v1_folders = get_v1_dataset_folders (dataset , headers_v1 , headers_v2 , parent_type , parent_id )
246+
247+ for folder_v1 in dataset_v1_folders :
248+ current_folder_hierarchy = folder_v1 ['name' ]
249+ new_parent = add_folder_hierarchy_to_migration_folder (folder_hierarchy = current_folder_hierarchy ,
250+ dataset_v2 = dataset_v2_id ,
251+ folder_id_v2 = parent_id ,
252+ headers = headers_v2
253+ )
254+ parent_id = new_parent
255+ print (f"This is the folder" )
256+
239257 files_endpoint = f"{ CLOWDER_V1 } /api/datasets/{ dataset ['id' ]} /files"
240258 files_response = requests .get (files_endpoint , headers = headers_v1 )
241259 files_json = files_response .json ()
260+ for file in files_json :
261+ if 'folders' in file :
262+ print (f"This file is in a folder" )
263+ # TODO get folder
264+ folder_endpoint = f"{ CLOWDER_V1 } /api/datasets/{ dataset ['id' ]} /files"
265+ else :
266+ print (f"This file is not in a folder" )
267+ # TODO upload it to the folder
268+ if parent_type == "dataset" :
269+ print (f"Upload to a dataset" )
270+ if parent_type == "folder" :
271+ print (f"Upload to a folder" )
242272 print (f"Got dataset files" )
243273
244274
@@ -517,6 +547,19 @@ def create_v2_group(space, headers):
517547 response = requests .post (group_in_v2_endpoint , json = group , headers = headers )
518548 return response .json ()["id" ]
519549
550+ # TODO try this
551+ def add_folder_hierarchy_to_migration_folder (folder_hierarchy , dataset_v2 , folder_id_v2 , headers ):
552+ """Add folder hierarchy to a dataset in Clowder v2."""
553+ hierarchy_parts = folder_hierarchy .split ("/" )
554+ if hierarchy_parts [0 ] == '' :
555+ hierarchy_parts = hierarchy_parts [1 :]
556+ current_parent = folder_id_v2
557+ for part in hierarchy_parts :
558+ result = create_folder_if_not_exists_or_get (
559+ part , current_parent , dataset_v2 , headers
560+ )
561+ if result :
562+ current_parent = result ["id" ]
520563
521564def add_folder_hierarchy (folder_hierarchy , dataset_v2 , headers ):
522565 """Add folder hierarchy to a dataset in Clowder v2."""
0 commit comments