Add support for multiple delete markers on an s3 object
This commit is contained in:
parent
e8c65d3d85
commit
756b5d6671
3 changed files with 76 additions and 7 deletions
|
|
@ -27,8 +27,14 @@ class FakeDeleteMarker(BaseModel):
|
|||
|
||||
def __init__(self, key):
|
||||
self.key = key
|
||||
self.name = key.name
|
||||
self.last_modified = datetime.datetime.utcnow()
|
||||
self._version_id = key.version_id + 1
|
||||
|
||||
@property
|
||||
def last_modified_ISO8601(self):
|
||||
return iso_8601_datetime_with_milliseconds(self.last_modified)
|
||||
|
||||
@property
|
||||
def version_id(self):
|
||||
return self._version_id
|
||||
|
|
@ -630,10 +636,7 @@ class S3Backend(BaseBackend):
|
|||
latest_versions = {}
|
||||
|
||||
for version in versions:
|
||||
if isinstance(version, FakeDeleteMarker):
|
||||
name = version.key.name
|
||||
else:
|
||||
name = version.name
|
||||
name = version.name
|
||||
version_id = version.version_id
|
||||
maximum_version_per_key[name] = max(
|
||||
version_id,
|
||||
|
|
|
|||
|
|
@ -1273,10 +1273,10 @@ S3_BUCKET_GET_VERSIONS = """<?xml version="1.0" encoding="UTF-8"?>
|
|||
{% endfor %}
|
||||
{% for marker in delete_marker_list %}
|
||||
<DeleteMarker>
|
||||
<Key>{{ marker.key.name }}</Key>
|
||||
<Key>{{ marker.name }}</Key>
|
||||
<VersionId>{{ marker.version_id }}</VersionId>
|
||||
<IsLatest>{% if latest_versions[marker.key.name] == marker.version_id %}true{% else %}false{% endif %}</IsLatest>
|
||||
<LastModified>{{ marker.key.last_modified_ISO8601 }}</LastModified>
|
||||
<IsLatest>{% if latest_versions[marker.name] == marker.version_id %}true{% else %}false{% endif %}</IsLatest>
|
||||
<LastModified>{{ marker.last_modified_ISO8601 }}</LastModified>
|
||||
<Owner>
|
||||
<ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
|
||||
<DisplayName>webfile</DisplayName>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue