Skip to content

Commit 80a65a8

Browse files
committed
Add keepfiles support
1 parent 6f38933 commit 80a65a8

2 files changed

Lines changed: 12 additions & 7 deletions

File tree

caltechdata_api/caltechdata_edit.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -333,12 +333,7 @@ def caltechdata_edit(
333333
files, file_upload_link, headers, f_headers, keepfiles=keepfiles
334334
)
335335
if file_links:
336-
ex_file = existing["files"]["entries"].keys()
337-
# At the moment we don't replace existing links. This needs to change
338-
for link in file_links:
339-
file = link.split("/")[-1]
340-
if file not in ex_file:
341-
add_file_links(file_upload_link, [link], headers)
336+
add_file_links(file_upload_link, [link], headers, keepfiles=keepfiles)
342337

343338
else:
344339
# We want files to stay the same as the existing record

caltechdata_api/caltechdata_write.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)