aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Johnson2010-01-19 13:13:16 -0700
committerErik Johnson2010-01-19 13:13:16 -0700
commitd6210ccd519c381bb4b1f0d5fc8d3cf071e5c931 (patch)
treef82f9727308d2614329b1328703cf43c5ad3680a
parent5449336322ff186d0ea1b111500bb9406d64d0f0 (diff)
downloadamazons3-py-d6210ccd519c381bb4b1f0d5fc8d3cf071e5c931.tar.gz
amazons3-py-d6210ccd519c381bb4b1f0d5fc8d3cf071e5c931.zip
- Added bug fix to amazonS3 filename generation method when there is a
name collision. - Added optimization in bucket listing when checking for filename collision
-rw-r--r--django/__init__.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/django/__init__.py b/django/__init__.py
index f69bffa..10d6728 100644
--- a/django/__init__.py
+++ b/django/__init__.py
@@ -38,7 +38,8 @@ class S3Storage(Storage):
38 return True 38 return True
39 39
40 def exists(self, filename): 40 def exists(self, filename):
41 contents = self.conn.list_bucket(self.options['bucket']) 41 import os
42 contents = self.conn.list_bucket(self.options['bucket'], {'prefix': os.path.dirname(filename)})
42 if filename in [f.key for f in contents.entries]: 43 if filename in [f.key for f in contents.entries]:
43 return True 44 return True
44 else: 45 else:
@@ -122,6 +123,7 @@ class S3Storage(Storage):
122 basefilename = os.path.splitext(filename) 123 basefilename = os.path.splitext(filename)
123 i = 1 124 i = 1
124 while self.exists(filename): 125 while self.exists(filename):
126 i += 1
125 filename = '%s-%d%s' % (basefilename[0], i, basefilename[1]) 127 filename = '%s-%d%s' % (basefilename[0], i, basefilename[1])
126 128
127 return filename 129 return filename