attachment_s3: Add set ACL function

This commit is contained in:
Akim Juillerat
2019-12-12 14:43:51 +01:00
parent 0ea58439f6
commit 8f902ed7ea
+28
View File
@@ -106,6 +106,34 @@ class IrAttachment(models.Model):
}) })
return bucket return bucket
@api.multi
def _store_file_set_acl(self, acl):
self.ensure_one()
fname = self.store_fname
if fname.startswith('s3://'):
s3uri = S3Uri(fname)
try:
bucket = self._get_s3_bucket(name=s3uri.bucket())
except exceptions.UserError:
_logger.exception(
"error getting bucket from object storage"
)
key = s3uri.item()
try:
obj = bucket.Object(key=key)
obj.Acl().put(ACL=acl)
_logger.info(
"ACL public-read successfully set on object %s" % fname
)
return True
except ClientError:
_logger.exception(
"Cannot set ACL %s on object %s" % (acl, fname)
)
else:
_logger.warning("Cannot set ACL on object not stored on S3")
return False
@api.model @api.model
def _store_file_read(self, fname, bin_size=False): def _store_file_read(self, fname, bin_size=False):
if fname.startswith('s3://'): if fname.startswith('s3://'):