diff options
-rw-r--r-- | license_protected_downloads/api/v3.py | 4 | ||||
-rw-r--r-- | license_protected_downloads/artifact/s3.py | 4 | ||||
-rw-r--r-- | license_protected_downloads/common.py | 3 |
3 files changed, 8 insertions, 3 deletions
diff --git a/license_protected_downloads/api/v3.py b/license_protected_downloads/api/v3.py index b43f10b..9ef6470 100644 --- a/license_protected_downloads/api/v3.py +++ b/license_protected_downloads/api/v3.py @@ -1,4 +1,5 @@ import os +import urllib from django.conf import settings from django.http import HttpResponse @@ -27,7 +28,8 @@ class PublishResource(v2.PublishResource): if not b: raise HttpResponseError('S3 is not enabled', 403) - k = b.new_key(settings.S3_PREFIX_PATH + self.path) + path = urllib.pathname2url(self.path) + k = b.new_key(settings.S3_PREFIX_PATH + path) if k.exists(): APILog.mark(self.request, 'FILE_OVERWRITE_DENIED') raise HttpResponseError('File already exists', 403) diff --git a/license_protected_downloads/artifact/s3.py b/license_protected_downloads/artifact/s3.py index e7f8282..0ba0cca 100644 --- a/license_protected_downloads/artifact/s3.py +++ b/license_protected_downloads/artifact/s3.py @@ -1,6 +1,7 @@ import datetime import mimetypes import os +import urllib import time import boto @@ -50,6 +51,7 @@ class S3Artifact(Artifact): file_name = '' item.size = 0 item.last_modified = '-' + file_name = urllib.url2pathname(file_name) self.bucket = bucket self.parent = parent if parent and hasattr(self.parent, 'children'): @@ -128,7 +130,7 @@ class S3Artifact(Artifact): else: key += '/' + os.path.dirname(self.file_name) + fname try: - key = boto.s3.key.Key(self.bucket, key) + key = boto.s3.key.Key(self.bucket, urllib.pathname2url(key)) return key.get_contents_as_string() except boto.exception.S3ResponseError: pass # return None - its okay diff --git a/license_protected_downloads/common.py b/license_protected_downloads/common.py index 7a9aaff..fe4722d 100644 --- a/license_protected_downloads/common.py +++ b/license_protected_downloads/common.py @@ -1,5 +1,6 @@ import fnmatch import os +import urllib import boto @@ -97,7 +98,7 @@ def _find_s3_artifact(request, path): if not b: return # s3 isn't configured - prefix = settings.S3_PREFIX_PATH + path + prefix = settings.S3_PREFIX_PATH + urllib.pathname2url(path) if prefix[-1] == '/': # s3 listing give sub dir, we don't want that prefix = prefix[:-1] |