Merge commit 'refs/pull/122/head' of github.com:camptocamp/odoo-cloud-platform into merge-branch-2543-master-99f318df

This commit is contained in:
Denis Leemann
2020-03-30 10:46:21 +02:00
+40
View File
@@ -106,6 +106,46 @@ 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"
)
return False
key = s3uri.item()
try:
obj = bucket.Object(key=key)
obj.Acl().put(ACL=acl)
_logger.info(
"ACL %s successfully set on object %s" % (acl, fname)
)
return True
except ClientError as e:
error_code = e.response['Error']['Code']
if error_code == "NoSuchKey":
_logger.exception(
"Object %s does not exists on S3 bucket" % fname
)
elif error_code == 'NotImplemented':
_logger.exception(
"S3 storage does not implement ACL" % fname
)
else:
_logger.exception(
"Cannot set ACL %s on object %s" % (acl, fname)
)
return False
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://'):