@@ -67,13 +67,14 @@ def write_files_rdm(
6767 raise Exception (result .text )
6868
6969
70- def add_file_links (file_upload_link , file_links , headers ):
70+ def add_file_links (file_upload_link , file_links , headers , keepfiles = False ):
7171 # Currently configured for S3 links, assuming all are at the same endpoint
7272 link_string = ""
7373 endpoint = "https://" + file_links [0 ].split ("/" )[2 ]
7474 s3 = s3fs .S3FileSystem (anon = True , client_kwargs = {"endpoint_url" : endpoint })
7575 index = 0
7676 file_json = []
77+ f_list = []
7778 for link in file_links :
7879 file = link .split ("/" )[- 1 ]
7980 path = link .split (endpoint )[1 ]
@@ -82,6 +83,15 @@ def add_file_links(file_upload_link, file_links, headers):
8283 file_json .append (
8384 {"key" : file , "size" : size , "transfer" : {"type" : "R" , "url" : link }}
8485 )
86+ # See if any existing files need to be retained
87+ if keepfiles == True :
88+ result = requests .get (file_upload_link , headers = f_headers , verify = verify )
89+ if result .status_code == 200 :
90+ ex_files = result .json ()["entries" ]
91+ for ex in ex_files :
92+ if ex ["key" ] not in f_list :
93+ file_json .append (ex )
94+
8595 result = requests .post (file_upload_link , headers = headers , json = file_json )
8696 if result .status_code != 201 :
8797 raise Exception (result .text )
0 commit comments