mirror of
https://github.com/camptocamp/odoo-cloud-platform.git
synced 2026-06-23 18:04:34 +00:00
Merge commit 'refs/pull/122/head' of github.com:camptocamp/odoo-cloud-platform into merge-branch-2543-bssmb-362-fix_set_acl_with_prod_dump_in_dev-dd4cd51b
This commit is contained in:
@@ -106,6 +106,46 @@ class IrAttachment(models.Model):
|
||||
})
|
||||
return bucket
|
||||
|
||||
@api.multi
|
||||
def _store_file_set_acl(self, acl):
|
||||
self.ensure_one()
|
||||
fname = self.store_fname
|
||||
if fname and 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
|
||||
def _store_file_read(self, fname, bin_size=False):
|
||||
if fname.startswith('s3://'):
|
||||
|
||||
Reference in New Issue
Block a user