Skip to content

Commit b664b04

Browse files
committed
Fix S3 get missing files
1 parent 6b37b0e commit b664b04

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

gramps_webapi/api/media.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ def prefix(self) -> Optional[str]:
122122
return None
123123
return splitted[1].rstrip("/")
124124

125-
@property
126-
def remote_keys(self) -> Set[str]:
125+
def get_remote_keys(self) -> Set[str]:
127126
"""Return the set of all object keys that are known to exist on remote."""
128127
keys = list_object_keys(self.bucket_name, endpoint_url=self.endpoint_url)
129128
return set(removeprefix(key, self.prefix or "").lstrip("/") for key in keys)
@@ -158,7 +157,8 @@ def filter_existing_files(self, objects: List[Media]) -> List[Media]:
158157
"""Given a list of media objects, return the ones with existing files."""
159158
# for S3, we use the bucket-level list of handles to avoid having
160159
# to do many GETs that are more expensive than one LIST
161-
return [obj for obj in objects if obj.checksum in self.remote_keys]
160+
remote_keys = self.get_remote_keys()
161+
return [obj for obj in objects if obj.checksum in remote_keys]
162162

163163

164164
def MediaHandler(base_dir: Optional[str]) -> MediaHandlerBase:

tests/test_s3.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,30 +49,30 @@ def test_mediahandler(bucket):
4949
handler = MediaHandler(URL)
5050
assert handler.endpoint_url is None
5151
assert handler.bucket_name == BUCKET
52-
assert handler.remote_keys == set()
52+
assert handler.get_remote_keys() == set()
5353

5454

5555
def test_upload(bucket):
5656
handler = MediaHandler(URL)
5757
img, checksum = get_image(0)
58-
assert handler.remote_keys == set()
58+
assert handler.get_remote_keys() == set()
5959
handler.upload_file(img, checksum, "image/jpeg")
60-
assert handler.remote_keys == {checksum}
60+
assert handler.get_remote_keys() == {checksum}
6161
img, checksum2 = get_image(1)
6262
handler.upload_file(img, checksum2, "image/jpeg")
63-
assert handler.remote_keys == {checksum, checksum2}
63+
assert handler.get_remote_keys() == {checksum, checksum2}
6464

6565

6666
def test_upload_prefix(bucket):
6767
handler = MediaHandler(URL_PREFIX)
6868
img, checksum = get_image(0)
69-
assert handler.remote_keys == set()
69+
assert handler.get_remote_keys() == set()
7070
handler.upload_file(img, checksum, "image/jpeg")
71-
assert handler.remote_keys == {checksum}
71+
assert handler.get_remote_keys() == {checksum}
7272
keys = list_object_keys(handler.bucket_name, handler.endpoint_url)
7373
assert keys == [f"mytree/{checksum}"]
7474
img, checksum2 = get_image(1)
7575
handler.upload_file(img, checksum2, "image/jpeg")
76-
assert handler.remote_keys == {checksum, checksum2}
76+
assert handler.get_remote_keys() == {checksum, checksum2}
7777
keys = list_object_keys(handler.bucket_name, handler.endpoint_url)
7878
assert sorted(keys) == sorted([f"mytree/{checksum}", f"mytree/{checksum2}"])

0 commit comments

Comments
 (0)