mirror of
https://github.com/camptocamp/odoo-cloud-platform.git
synced 2026-06-24 02:08:36 +00:00
add conditionnal mimetype upload file s3
This commit is contained in:
@@ -181,6 +181,7 @@ class IrAttachment(models.Model):
|
|||||||
@api.model
|
@api.model
|
||||||
def _store_file_write(self, key, bin_data):
|
def _store_file_write(self, key, bin_data):
|
||||||
location = self.env.context.get('storage_location') or self._storage()
|
location = self.env.context.get('storage_location') or self._storage()
|
||||||
|
mimetype = self.env.context.get('mimetype') or self.mimetype
|
||||||
if location == 's3':
|
if location == 's3':
|
||||||
bucket = self._get_s3_bucket()
|
bucket = self._get_s3_bucket()
|
||||||
obj = bucket.Object(key=key)
|
obj = bucket.Object(key=key)
|
||||||
@@ -189,7 +190,10 @@ class IrAttachment(models.Model):
|
|||||||
file.seek(0)
|
file.seek(0)
|
||||||
filename = 's3://%s/%s' % (bucket.name, key)
|
filename = 's3://%s/%s' % (bucket.name, key)
|
||||||
try:
|
try:
|
||||||
obj.upload_fileobj(file)
|
if mimetype:
|
||||||
|
obj.upload_fileobj(file, ExtraArgs={'ContentType': mimetype})
|
||||||
|
else:
|
||||||
|
obj.upload_fileobj(file)
|
||||||
except ClientError as error:
|
except ClientError as error:
|
||||||
# log verbose error from s3, return short message for user
|
# log verbose error from s3, return short message for user
|
||||||
_logger.exception(
|
_logger.exception(
|
||||||
|
|||||||
@@ -164,6 +164,10 @@ class IrAttachment(models.Model):
|
|||||||
return len(bin_data) <= limit
|
return len(bin_data) <= limit
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def _get_datas_related_values(self, data, mimetype):
|
||||||
|
self=self.with_context(mimetype=mimetype)
|
||||||
|
return super(IrAttachment, self)._get_datas_related_values(data, mimetype)
|
||||||
|
|
||||||
def _inverse_datas(self):
|
def _inverse_datas(self):
|
||||||
# override in order to store files that need fast access,
|
# override in order to store files that need fast access,
|
||||||
# we keep them in the database instead of the object storage
|
# we keep them in the database instead of the object storage
|
||||||
|
|||||||
Reference in New Issue
Block a user