@@ 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)