d662e5d526e1 — Peter Sanchez 0.9.5 10 years ago
Adding some changes to use the new boto tweaks
2 files changed, 15 insertions(+), 11 deletions(-)

M webutils/__init__.py
M webutils/aws/s3proc.py
M webutils/__init__.py +1 -1
@@ 1,1 1,1 @@ 
-__version__ = '0.9.4'
+__version__ = '0.9.5'

          
M webutils/aws/s3proc.py +14 -10
@@ 20,7 20,7 @@ def checkbucket(view_func):
 
 
 class S3Proc(object):
-    def __init__(self, aws_key, aws_secret_key, 
+    def __init__(self, aws_key, aws_secret_key,
                                     bucket, default_perm='private'):
         self.aws_key = aws_key
         self.aws_secret_key = aws_secret_key

          
@@ 36,7 36,7 @@ class S3Proc(object):
         if default_perm not in self.perm_tuple:
             default_perm = 'private'
         self.default_perm = default_perm
-    
+
     def _get_perm(self, perm=None):
         if perm is None or (perm is not None and perm not in self.perm_tuple):
             perm = self.default_perm

          
@@ 45,11 45,15 @@ class S3Proc(object):
     def connect(self):
         self.conn = boto.connect_s3(self.aws_key, self.aws_secret_key)
         try:
-            self.bucket = self.conn.create_bucket(self.bucket_name)
-        except boto.exception.S3ResponseError, err:
-            raise S3Error('Error: %i: %s' % (err.status, err.reason))
-        except boto.exception.S3CreateError:
-            raise S3Error('Unable to create bucket %s' % self.bucket_name)
+            self.bucket = self.conn.get_bucket(self.bucket_name)
+        except boto.exception.S3ResponseError:
+            # Assume doesn't exist. Try to create a new one
+            try:
+                self.bucket = self.conn.create_bucket(self.bucket_name)
+            except boto.exception.S3ResponseError, err:
+                raise S3Error('Error: %i: %s' % (err.status, err.reason))
+            except boto.exception.S3CreateError:
+                raise S3Error('Unable to create bucket %s' % self.bucket_name)
         return True
 
     @checkbucket

          
@@ 62,9 66,9 @@ class S3Proc(object):
         return True
 
     @checkbucket
-    def put_from_file(self, filename, remote_filename=None, 
+    def put_from_file(self, filename, remote_filename=None,
                                                 perm=None, fail_silently=True):
-        ''' Upload file from disk. If you want a different 
+        ''' Upload file from disk. If you want a different
             remote filename, specify in remote_filename
         '''
         perm = self._get_perm(perm)

          
@@ 99,7 103,7 @@ class S3Proc(object):
 
     @checkbucket
     def delete(self, filename, fail_silently=True):
-        ''' Returns true/false on delete 
+        ''' Returns true/false on delete
             Raises S3Error if fail_silently is set to False
         '''
         self.bucket.delete_key(filename)