fix list-object-versions with prefix (#1045)
fix list-object-versions with prefix
This commit is contained in:
parent
c9e392a5fe
commit
2447725e98
@ -422,14 +422,15 @@ class S3Backend(BaseBackend):
|
||||
encoding_type=None,
|
||||
key_marker=None,
|
||||
max_keys=None,
|
||||
version_id_marker=None):
|
||||
version_id_marker=None,
|
||||
prefix=''):
|
||||
bucket = self.get_bucket(bucket_name)
|
||||
|
||||
if any((delimiter, encoding_type, key_marker, version_id_marker)):
|
||||
raise NotImplementedError(
|
||||
"Called get_bucket_versions with some of delimiter, encoding_type, key_marker, version_id_marker")
|
||||
|
||||
return itertools.chain(*(l for _, l in bucket.keys.iterlists()))
|
||||
return itertools.chain(*(l for key, l in bucket.keys.iterlists() if key.startswith(prefix)))
|
||||
|
||||
def get_bucket_policy(self, bucket_name):
|
||||
return self.get_bucket(bucket_name).policy
|
||||
|
@ -215,7 +215,7 @@ class ResponseObject(_TemplateEnvironmentMixin):
|
||||
encoding_type = querystring.get('encoding-type', [None])[0]
|
||||
key_marker = querystring.get('key-marker', [None])[0]
|
||||
max_keys = querystring.get('max-keys', [None])[0]
|
||||
prefix = querystring.get('prefix', [None])[0]
|
||||
prefix = querystring.get('prefix', [''])[0]
|
||||
version_id_marker = querystring.get('version-id-marker', [None])[0]
|
||||
|
||||
bucket = self.backend.get_bucket(bucket_name)
|
||||
@ -225,7 +225,8 @@ class ResponseObject(_TemplateEnvironmentMixin):
|
||||
encoding_type=encoding_type,
|
||||
key_marker=key_marker,
|
||||
max_keys=max_keys,
|
||||
version_id_marker=version_id_marker
|
||||
version_id_marker=version_id_marker,
|
||||
prefix=prefix
|
||||
)
|
||||
latest_versions = self.backend.get_bucket_latest_versions(
|
||||
bucket_name=bucket_name
|
||||
|
@ -770,6 +770,14 @@ def test_list_versions():
|
||||
versions[1].version_id.should.equal('1')
|
||||
versions[1].get_contents_as_string().should.equal(b"Version 2")
|
||||
|
||||
key = Key(bucket, 'the2-key')
|
||||
key.set_contents_from_string("Version 1")
|
||||
|
||||
keys = list(bucket.list())
|
||||
keys.should.have.length_of(2)
|
||||
versions = list(bucket.list_versions(prefix='the2-'))
|
||||
versions.should.have.length_of(1)
|
||||
|
||||
|
||||
@mock_s3_deprecated
|
||||
def test_acl_setting():
|
||||
|
Loading…
Reference in New Issue
Block a user