# HG changeset patch # User Peter Sanchez # Date 1375380504 25200 # Thu Aug 01 11:08:24 2013 -0700 # Node ID d662e5d526e189389d190dfee8f590d3c84e96db # Parent 354b1e3fa75e7af849ae11b43ca4fda8b381832d Adding some changes to use the new boto tweaks diff --git a/webutils/__init__.py b/webutils/__init__.py --- a/webutils/__init__.py +++ b/webutils/__init__.py @@ -1,1 +1,1 @@ -__version__ = '0.9.4' +__version__ = '0.9.5' diff --git a/webutils/aws/s3proc.py b/webutils/aws/s3proc.py --- a/webutils/aws/s3proc.py +++ b/webutils/aws/s3proc.py @@ -20,7 +20,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ @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)