[FIX] attachment_s3: Close fileobjects after usage

This commit is contained in:
Akim Juillerat
2020-06-22 07:46:16 +02:00
committed by Guewen Baconnier
co-authored by Guewen Baconnier
parent c89bfc83e0
commit 11c90c5a17
+18 -18
View File
@@ -124,10 +124,10 @@ class IrAttachment(models.Model):
)
if bin_size:
return bucket.Object(key).content_length
res = io.BytesIO()
bucket.download_fileobj(key, res)
res.seek(0)
read = base64.b64encode(res.read())
with io.BytesIO() as res:
bucket.download_fileobj(key, res)
res.seek(0)
read = base64.b64encode(res.read())
except ClientError:
read = ''
_logger.info(
@@ -143,20 +143,20 @@ class IrAttachment(models.Model):
if location == 's3':
bucket = self._get_s3_bucket()
obj = bucket.Object(key=key)
file = io.BytesIO()
file.write(bin_data)
file.seek(0)
filename = 's3://%s/%s' % (bucket.name, key)
try:
obj.upload_fileobj(file)
except ClientError as error:
# log verbose error from s3, return short message for user
_logger.exception(
'Error during storage of the file %s' % filename
)
raise exceptions.UserError(
_('The file could not be stored: %s') % str(error)
)
with io.BytesIO() as file:
file.write(bin_data)
file.seek(0)
filename = 's3://%s/%s' % (bucket.name, key)
try:
obj.upload_fileobj(file)
except ClientError as error:
# log verbose error from s3, return short message for user
_logger.exception(
'Error during storage of the file %s' % filename
)
raise exceptions.UserError(
_('The file could not be stored: %s') % str(error)
)
else:
_super = super()
filename = _super._store_file_write(key, bin_data)