diff options
| author | Erik Johnson | 2010-01-19 13:13:16 -0700 |
|---|---|---|
| committer | Erik Johnson | 2010-01-19 13:13:16 -0700 |
| commit | d6210ccd519c381bb4b1f0d5fc8d3cf071e5c931 (patch) | |
| tree | f82f9727308d2614329b1328703cf43c5ad3680a | |
| parent | 5449336322ff186d0ea1b111500bb9406d64d0f0 (diff) | |
| download | amazons3-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__.py | 4 |
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 |