@@ -255,13 +255,17 @@ def process_dataset_files(dataset, headers_v1, headers_v2, parent_type, parent_i
255255 files_endpoint = f"{ CLOWDER_V1 } /api/datasets/{ dataset ['id' ]} /files"
256256 files_response = requests .get (files_endpoint , headers = headers_v1 )
257257 files_json = files_response .json ()
258+ # TODO WORK HERE
258259 for file in files_json :
259260 if 'folders' in file :
260261 print (f"This file is in a folder" )
262+ current_file_folder_name = file ['folders' ]['name' ]
261263 matching_folder = None
262264 for folder_v2 in all_v2_dataset_folders :
263265 if folder_v2 ['name' ] == file ['folders' ]['name' ]:
264- print (f"Upload this file to a folder" )
266+ print (f"Upload this file to a folder" )
267+ matching_folder = folder_v2
268+ download_and_upload_file ()
265269 else :
266270 print (f"This file is not in a folder" )
267271 # TODO upload it to the folder
@@ -620,6 +624,48 @@ def add_dataset_folders(dataset_v1, dataset_v2, headers):
620624 add_folder_hierarchy (folder ["name" ], dataset_v2 , headers )
621625
622626
627+ def download_and_upload_file_to_folder (file , folder , dataset_v2_id , headers_v2 ):
628+ """Download a file from Clowder v1 and upload it to Clowder v2."""
629+ filename = file ["filename" ]
630+ file_id = file ["id" ]
631+ file_folder = folder
632+
633+ # Download the file from Clowder v1
634+ v1_download_url = f"{ CLOWDER_V1 } /api/files/{ file_id } ?superAdmin=true"
635+ print (f"Downloading file: { filename } " )
636+ download_response = requests .get (v1_download_url , headers = clowder_headers_v1 )
637+
638+ with open (filename , "wb" ) as f :
639+ f .write (download_response .content )
640+
641+ # Upload the file to Clowder v2
642+ dataset_file_upload_endpoint = f"{ CLOWDER_V2 } /api/v2/datasets/{ dataset_v2_id } /files"
643+ if folder :
644+ dataset_file_upload_endpoint += f"Multiple?folder_id={ folder ['id' ]} "
645+ response = requests .post (
646+ dataset_file_upload_endpoint ,
647+ headers = headers_v2 ,
648+ files = {"file" : open (filename , "rb" )},
649+ )
650+ else :
651+ print (f"This file is not in a folder" )
652+
653+ # Clean up the local file after upload
654+ try :
655+ os .remove (filename )
656+ except Exception as e :
657+ print (f"Could not delete locally downloaded file: { filename } " )
658+ print (e )
659+
660+ if response .status_code == 200 :
661+ print (f"Uploaded file: { filename } to dataset { dataset_v2_id } " )
662+ return response .json ().get ("id" )
663+ else :
664+ print (f"Failed to upload file: { filename } to dataset { dataset_v2_id } " )
665+
666+ return None
667+
668+
623669def download_and_upload_file (file , all_dataset_folders , dataset_v2_id , headers_v2 ):
624670 """Download a file from Clowder v1 and upload it to Clowder v2."""
625671 filename = file ["filename" ]
0 commit comments