Merge pull request #2430 from jessevogt/handle-url-encoded-keys
Fix for #2431 delete objects fails with url encoded key
This commit is contained in:
commit
23c1696b72
4 changed files with 74 additions and 5 deletions
|
|
@ -20,7 +20,7 @@ from .exceptions import BucketAlreadyExists, S3ClientError, MissingBucket, Missi
|
|||
MalformedACLError, InvalidNotificationARN, InvalidNotificationEvent, ObjectNotInActiveTierError
|
||||
from .models import s3_backend, get_canned_acl, FakeGrantee, FakeGrant, FakeAcl, FakeKey, FakeTagging, FakeTagSet, \
|
||||
FakeTag
|
||||
from .utils import bucket_name_from_url, clean_key_name, metadata_from_headers, parse_region_from_url
|
||||
from .utils import bucket_name_from_url, clean_key_name, undo_clean_key_name, metadata_from_headers, parse_region_from_url
|
||||
from xml.dom import minidom
|
||||
|
||||
|
||||
|
|
@ -711,7 +711,7 @@ class ResponseObject(_TemplateEnvironmentMixin, ActionAuthenticatorMixin):
|
|||
|
||||
for k in keys:
|
||||
key_name = k.firstChild.nodeValue
|
||||
success = self.backend.delete_key(bucket_name, key_name)
|
||||
success = self.backend.delete_key(bucket_name, undo_clean_key_name(key_name))
|
||||
if success:
|
||||
deleted_names.append(key_name)
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import os
|
|||
from boto.s3.key import Key
|
||||
import re
|
||||
import six
|
||||
from six.moves.urllib.parse import urlparse, unquote
|
||||
from six.moves.urllib.parse import urlparse, unquote, quote
|
||||
import sys
|
||||
|
||||
|
||||
|
|
@ -71,10 +71,15 @@ def metadata_from_headers(headers):
|
|||
def clean_key_name(key_name):
|
||||
if six.PY2:
|
||||
return unquote(key_name.encode('utf-8')).decode('utf-8')
|
||||
|
||||
return unquote(key_name)
|
||||
|
||||
|
||||
def undo_clean_key_name(key_name):
|
||||
if six.PY2:
|
||||
return quote(key_name.encode('utf-8')).decode('utf-8')
|
||||
return quote(key_name)
|
||||
|
||||
|
||||
class _VersionedKeyStore(dict):
|
||||
|
||||
""" A simplified/modified version of Django's `MultiValueDict` taken from:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue