diff --git a/base_fileurl_field/README.rst b/base_fileurl_field/README.rst index ae841f5..951fc3d 100644 --- a/base_fileurl_field/README.rst +++ b/base_fileurl_field/README.rst @@ -24,6 +24,8 @@ FileURL fields is intended to store Binary data on an external storage Will be used to set fname on ir.attachment and, if storage_path is defined, will be passed to force the storage key. +:param acl_public_read: Set public-read ACL by default + Limitations / Issues -------------------- diff --git a/base_fileurl_field/fields.py b/base_fileurl_field/fields.py index 0d2b4b6..28c16d6 100644 --- a/base_fileurl_field/fields.py +++ b/base_fileurl_field/fields.py @@ -33,6 +33,7 @@ class FileURL(fields.Binary): 'storage_location': '', # External storage activated on the system (cf base_attachment_storage) # noqa 'storage_path': '', # Path to be used as storage key (prefix of filename) # noqa 'filename': '', # Field to use to store the filename on ir.attachment + 'acl_public_read': True, # Set public-read ACL by default } def create(self, record_values): @@ -51,6 +52,7 @@ class FileURL(fields.Binary): 'res_field': self.name, 'res_id': record.id, 'type': 'binary', + 'public': self.acl_public_read, 'datas': value, } fname = False @@ -61,11 +63,13 @@ class FileURL(fields.Binary): storage_key = self._build_storage_key(fname) if not fname: storage_key = False - env['ir.attachment'].sudo().with_context( + attachment = env['ir.attachment'].sudo().with_context( binary_field_real_user=env.user, storage_location=self.storage_location, force_storage_key=storage_key, ).create(vals) + if self.acl_public_read: + attachment._store_file_set_acl('public-read') def write(self, records, value): for record in records: