Delete S3 file only when bucket is the current one

This commit is contained in:
Guewen Baconnier
2016-11-14 08:29:13 +01:00
parent 110ec2399d
commit 607268bd4f
+17 -14
View File
@@ -150,20 +150,23 @@ class IrAttachment(models.Model):
s3uri = S3Uri(fname) s3uri = S3Uri(fname)
bucket_name = s3uri.bucket() bucket_name = s3uri.bucket()
item_name = s3uri.item() item_name = s3uri.item()
# delete the file only if it is on the current configured bucket
bucket = self._get_s3_bucket(name=bucket_name) # otherwise, we might delete files used on a different environment
filekey = bucket.get_key(item_name) if bucket_name == os.environ.get('AWS_BUCKETNAME'):
if not count and filekey: bucket = self._get_s3_bucket()
try: filekey = bucket.get_key(item_name)
filekey.delete() if not count and filekey:
_logger.info( try:
'file %s deleted on the object storage' % (fname,) filekey.delete()
) _logger.info(
except S3ResponseError: 'file %s deleted on the object storage' % (fname,)
# log verbose error from s3, return short message for user )
_logger.exception( except S3ResponseError:
'Error during deletion of the file %s' % fname # log verbose error from s3, return short message for
) # user
_logger.exception(
'Error during deletion of the file %s' % fname
)
else: else:
super(IrAttachment, self)._file_delete(fname) super(IrAttachment, self)._file_delete(fname)