| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/19.0/storage_file |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Storage |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Laurent Mignon (ACSONE) |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:49 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/server-env: - server_environment OCA/storage: - storage_backend odoo/odoo: - base - base_sparse_field |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python_slugify cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | External file management depending on Storage Backend module. It include these features: \* link to any Odoo model/record \* store metadata like: checksum, mimetype Use cases (with help of additional modules): - store pdf (like invoices) on a file server with high SLA - access attachments with read/write on prod environment and only read only on dev / testing |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
storage_backend_view_form |
storage.backend | field | Inherits storage_backend.storage_backend_view_form | |
storage_file_view_form |
storage.file | form | New | |
storage_file_view_search |
storage.file | search | New | |
storage_file_view_tree |
storage.file | list | New |
No new fields.
Public methods (1)render_qweb_pdf(self, res_ids=None, data=None)
backend_view_use_internal_url
Boolean
help='Decide if Odoo backend views should use the external URL (usually a CDN) or the internal url with direct access to the storage. This could save you some money if you pay by CDN traffic.'
base_url
Char
default=''
base_url_for_files
Char
compute='_compute_base_url_for_files'
store=True
filename_strategy
Selection
default='name_with_id'
help='Strategy to build the name of the file to be stored.\nName and ID: will store the file with its name + its id.\nSHA Hash: will use the hash of the file as filename (same method as the native attachment storage)'
selection=[('name_with_id', 'Name and ID'), ('hash', 'SHA hash')]
is_public
Boolean
default=False
help='Define if every files stored into this backend are public or not. Examples:\nPrivate: your file/image can not be displayed is the user is not logged (not available on other website);\nPublic: your file/image can be displayed if nobody is logged (useful to display files on external websites)'
served_by
Selection
default='odoo'
required=True
selection=[('odoo', 'Odoo'), ('external', 'External')]
url_include_directory_path
Boolean
default=False
help="Normally the directory_path it's for internal usage. If this flag is enabled the path will be used to compute the public URL."
action_recompute_base_url_for_files(self)
write(self, vals)
active
Boolean
default=True
backend_id
Many2one → storage.backend
index=True
required=True
args: 'storage.backend', 'Storage'
checksum
Char
index=True
size=40
args: 'Checksum/SHA1'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
data
Binary
compute='_compute_data'
copy=True
help='Data'
inverse='_inverse_data'
store=False
extension
Char
compute='_compute_extract_filename'
store=True
file_size
Integer
file_type
Selection
filename
Char
compute='_compute_extract_filename'
store=True
args: 'Filename without extension'
human_file_size
Char
compute='_compute_human_file_size'
store=True
internal_url
Char
compute='_compute_internal_url'
help='HTTP URL to load the file directly from storage.'
mimetype
Char
compute='_compute_extract_filename'
store=True
args: 'Mime Type'
name
Char
index=True
required=True
relative_path
Char
copy=False
help='Relative location for backend'
slug
Char
compute='_compute_slug'
help='Slug-ified name with ID for URL'
store=True
to_delete
Boolean
url
Char
compute='_compute_url'
help='HTTP accessible path to the file'
url_path
Char
compute='_compute_url_path'
help='Accessible path, no base URL'
get_from_slug_name_with_id(self, slug_name_with_id)
unlink(self)
write(self, vals)
data
Binary
file_id
Many2one → storage.file
file_name
Char
confirm(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/18.0/storage_file |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Storage |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, Simone Orsi, oca-ci, thien |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:15 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/server-env: - server_environment OCA/storage: - storage_backend odoo/odoo: - base - base_sparse_field |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python_slugify cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | External file management depending on Storage Backend module. It include these features: \* link to any Odoo model/record \* store metadata like: checksum, mimetype Use cases (with help of additional modules): - store pdf (like invoices) on a file server with high SLA - access attachments with read/write on prod environment and only read only on dev / testing |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
storage_backend_view_form |
storage.backend | field | Inherits storage_backend.storage_backend_view_form | |
storage_file_swap_backend_view_form |
storage.file.swap.backend.form | storage.file.swap.backend | form | New |
storage_file_view_form |
storage.file | form | New | |
storage_file_view_search |
storage.file | search | New | |
storage_file_view_tree |
storage.file | list | New |
No new fields.
Public methods (1)render_qweb_pdf(self, res_ids=None, data=None)
backend_view_use_internal_url
Boolean
help='Decide if Odoo backend views should use the external URL (usually a CDN) or the internal url with direct access to the storage. This could save you some money if you pay by CDN traffic.'
base_url
Char
default=''
base_url_for_files
Char
compute='_compute_base_url_for_files'
store=True
filename_strategy
Selection
default='name_with_id'
help='Strategy to build the name of the file to be stored.\nName and ID: will store the file with its name + its id.\nSHA Hash: will use the hash of the file as filename (same method as the native attachment storage)'
selection=[('name_with_id', 'Name and ID'), ('hash', 'SHA hash')]
is_public
Boolean
default=False
help='Define if every files stored into this backend are public or not. Examples:\nPrivate: your file/image can not be displayed is the user is not logged (not available on other website);\nPublic: your file/image can be displayed if nobody is logged (useful to display files on external websites)'
served_by
Selection
default='odoo'
required=True
selection=[('odoo', 'Odoo'), ('external', 'External')]
url_include_directory_path
Boolean
default=False
help="Normally the directory_path it's for internal usage. If this flag is enabled the path will be used to compute the public URL."
action_recompute_base_url_for_files(self)
write(self, vals)
active
Boolean
default=True
backend_categ_id
Many2one → storage.backend.category
related='backend_id.categ_id'
string='Backend Category'
args: 'storage.backend.category'
backend_id
Many2one → storage.backend
default=<expr>
index=True
required=True
args: 'storage.backend', 'Storage'
checksum
Char
index=True
size=40
args: 'Checksum/SHA1'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
data
Binary
compute='_compute_data'
copy=True
help='Data'
inverse='_inverse_data'
store=False
extension
Char
compute='_compute_extract_filename'
store=True
file_size
Integer
file_type
Selection
filename
Char
compute='_compute_extract_filename'
store=True
args: 'Filename without extension'
human_file_size
Char
compute='_compute_human_file_size'
store=True
internal_url
Char
compute='_compute_internal_url'
help='HTTP URL to load the file directly from storage.'
is_public
Boolean
compute='_compute_is_public'
compute_sudo=True
help='Reflects the `is_public` flag of the related backend.'
search='_search_is_public'
mimetype
Char
compute='_compute_extract_filename'
store=True
args: 'Mime Type'
name
Char
index=True
required=True
relative_path
Char
copy=False
help='Relative location for backend'
slug
Char
compute='_compute_slug'
help='Slug-ified name with ID for URL'
store=True
to_delete
Boolean
url
Char
compute='_compute_url'
help='HTTP accessible path to the file'
url_path
Char
compute='_compute_url_path'
help='Accessible path, no base URL'
get_from_slug_name_with_id(self, slug_name_with_id)
unlink(self)
write(self, vals)
data
Binary
file_id
Many2one → storage.file
file_name
Char
confirm(self)
dest_backend_id
Many2one → storage.backend
string='Destination Storage'
args: 'storage.backend'
file_ids
Many2many → storage.file
domain="[('backend_id', '=', source_backend_id)]"
string='Files'
args: 'storage.file'
source_backend_categ_id
Many2one → storage.backend.category
readonly=True
related='source_backend_id.categ_id'
string='Source Backend Category'
args: 'storage.backend.category'
source_backend_id
Many2one → storage.backend
readonly=True
string='Source Storage'
args: 'storage.backend'
action_apply(self)
default_get(self, fields_list)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/16.0/storage_file |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Storage |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, Simone Orsi, oca-ci, Héctor Vi Or |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:52 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/server-env: - server_environment OCA/storage: - storage_backend odoo/odoo: - base - base_sparse_field |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python_slugify cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
storage_backend_view_form |
storage.backend | field | Inherits storage_backend.storage_backend_view_form | |
storage_file_view_form |
storage.file | form | New | |
storage_file_view_search |
storage.file | search | New | |
storage_file_view_tree |
storage.file | tree | New |
No new fields.
Public methods (1)render_qweb_pdf(self, res_ids=None, data=None)
backend_view_use_internal_url
Boolean
help='Decide if Odoo backend views should use the external URL (usually a CDN) or the internal url with direct access to the storage. This could save you some money if you pay by CDN traffic.'
base_url
Char
default=''
base_url_for_files
Char
compute='_compute_base_url_for_files'
store=True
filename_strategy
Selection
default='name_with_id'
help='Strategy to build the name of the file to be stored.\nName and ID: will store the file with its name + its id.\nSHA Hash: will use the hash of the file as filename (same method as the native attachment storage)'
selection=[('name_with_id', 'Name and ID'), ('hash', 'SHA hash')]
is_public
Boolean
default=False
help='Define if every files stored into this backend are public or not. Examples:\nPrivate: your file/image can not be displayed is the user is not logged (not available on other website);\nPublic: your file/image can be displayed if nobody is logged (useful to display files on external websites)'
served_by
Selection
default='odoo'
required=True
selection=[('odoo', 'Odoo'), ('external', 'External')]
url_include_directory_path
Boolean
default=False
help="Normally the directory_path it's for internal usage. If this flag is enabled the path will be used to compute the public URL."
action_recompute_base_url_for_files(self)
write(self, vals)
active
Boolean
default=True
backend_id
Many2one → storage.backend
index=True
required=True
args: 'storage.backend', 'Storage'
checksum
Char
index=True
readonly=True
size=40
args: 'Checksum/SHA1'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
data
Binary
compute='_compute_data'
help='Datas'
inverse='_inverse_data'
store=False
extension
Char
compute='_compute_extract_filename'
store=True
file_size
Integer
file_type
Selection
filename
Char
compute='_compute_extract_filename'
store=True
args: 'Filename without extension'
human_file_size
Char
compute='_compute_human_file_size'
store=True
internal_url
Char
compute='_compute_internal_url'
help='HTTP URL to load the file directly from storage.'
mimetype
Char
compute='_compute_extract_filename'
store=True
args: 'Mime Type'
name
Char
index=True
required=True
relative_path
Char
help='Relative location for backend'
readonly=True
slug
Char
compute='_compute_slug'
help='Slug-ified name with ID for URL'
store=True
to_delete
Boolean
url
Char
compute='_compute_url'
help='HTTP accessible path to the file'
get_from_slug_name_with_id(self, slug_name_with_id)
unlink(self)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/15.0/storage_file |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Storage |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | OCA-git-bot, oca-ci, Jasmin Solanki |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:37 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/server-env: - server_environment OCA/storage: - storage_backend odoo/odoo: - base - base_sparse_field |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python_slugify cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
storage_backend_view_form |
storage.backend | field | Inherits storage_backend.storage_backend_view_form | |
storage_file_view_form |
storage.file | form | New | |
storage_file_view_search |
storage.file | search | New | |
storage_file_view_tree |
storage.file | tree | New |
No new fields.
Public methods (1)render_qweb_pdf(self, res_ids=None, data=None)
backend_view_use_internal_url
Boolean
help='Decide if Odoo backend views should use the external URL (usually a CDN) or the internal url with direct access to the storage. This could save you some money if you pay by CDN traffic.'
base_url
Char
default=''
base_url_for_files
Char
compute='_compute_base_url_for_files'
store=True
filename_strategy
Selection
default='name_with_id'
help='Strategy to build the name of the file to be stored.\nName and ID: will store the file with its name + its id.\nSHA Hash: will use the hash of the file as filename (same method as the native attachment storage)'
selection=[('name_with_id', 'Name and ID'), ('hash', 'SHA hash')]
is_public
Boolean
default=False
help='Define if every files stored into this backend are public or not. Examples:\nPrivate: your file/image can not be displayed is the user is not logged (not available on other website);\nPublic: your file/image can be displayed if nobody is logged (useful to display files on external websites)'
served_by
Selection
default='odoo'
required=True
selection=[('odoo', 'Odoo'), ('external', 'External')]
url_include_directory_path
Boolean
default=False
help="Normally the directory_path it's for internal usage. If this flag is enabled the path will be used to compute the public URL."
action_recompute_base_url_for_files(self)
write(self, vals)
active
Boolean
default=True
backend_id
Many2one → storage.backend
index=True
required=True
args: 'storage.backend', 'Storage'
checksum
Char
index=True
readonly=True
size=40
args: 'Checksum/SHA1'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
data
Binary
compute='_compute_data'
help='Datas'
inverse='_inverse_data'
store=False
extension
Char
compute='_compute_extract_filename'
store=True
file_size
Integer
file_type
Selection
filename
Char
compute='_compute_extract_filename'
store=True
args: 'Filename without extension'
human_file_size
Char
compute='_compute_human_file_size'
store=True
internal_url
Char
compute='_compute_internal_url'
help='HTTP URL to load the file directly from storage.'
mimetype
Char
compute='_compute_extract_filename'
store=True
args: 'Mime Type'
name
Char
index=True
required=True
relative_path
Char
help='Relative location for backend'
readonly=True
slug
Char
compute='_compute_slug'
help='Slug-ified name with ID for URL'
store=True
to_delete
Boolean
url
Char
compute='_compute_url'
help='HTTP accessible path to the file'
get_from_slug_name_with_id(self, slug_name_with_id)
unlink(self)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/14.0/storage_file |
| VERSION | |
| VERSION | 2.4.1 |
| CATEGORY | |
| CATEGORY | Storage |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Enric Tobella, Ivàn Todorovich, Sébastien Alix, Sébastien BEAU, oca-travis, Weblate, OCA-git-bot, Simone Orsi, Pierrick Brun, oca-ci, oca-git-bot, Mmequignon |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:04 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/server-env: - server_environment OCA/storage: - storage_backend odoo/odoo: - base - base_sparse_field |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python_slugify cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
storage_backend_view_form |
storage.backend | field | Inherits storage_backend.storage_backend_view_form | |
storage_file_view_form |
storage.file | form | New | |
storage_file_view_search |
storage.file | search | New | |
storage_file_view_tree |
storage.file | tree | New |
No new fields.
Public methods (1)render_qweb_pdf(self, res_ids=None, data=None)
backend_view_use_internal_url
Boolean
help='Decide if Odoo backend views should use the external URL (usually a CDN) or the internal url with direct access to the storage. This could save you some money if you pay by CDN traffic.'
base_url
Char
default=''
base_url_for_files
Char
compute='_compute_base_url_for_files'
store=True
filename_strategy
Selection
default='name_with_id'
help='Strategy to build the name of the file to be stored.\nName and ID: will store the file with its name + its id.\nSHA Hash: will use the hash of the file as filename (same method as the native attachment storage)'
selection=[('name_with_id', 'Name and ID'), ('hash', 'SHA hash')]
is_public
Boolean
default=False
help='Define if every files stored into this backend are public or not. Examples:\nPrivate: your file/image can not be displayed is the user is not logged (not available on other website);\nPublic: your file/image can be displayed if nobody is logged (useful to display files on external websites)'
served_by
Selection
default='odoo'
required=True
selection=[('odoo', 'Odoo'), ('external', 'External')]
url_include_directory_path
Boolean
default=False
help="Normally the directory_path it's for internal usage. If this flag is enabled the path will be used to compute the public URL."
action_recompute_base_url_for_files(self)
write(self, vals)
active
Boolean
default=True
backend_id
Many2one → storage.backend
index=True
required=True
args: 'storage.backend', 'Storage'
checksum
Char
index=True
readonly=True
size=40
args: 'Checksum/SHA1'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
data
Binary
compute='_compute_data'
copy=True
help='Data'
inverse='_inverse_data'
store=False
extension
Char
compute='_compute_extract_filename'
store=True
args: 'Extension'
file_size
Integer
file_type
Selection
filename
Char
compute='_compute_extract_filename'
store=True
args: 'Filename without extension'
human_file_size
Char
compute='_compute_human_file_size'
store=True
args: 'Human File Size'
internal_url
Char
compute='_compute_internal_url'
help='HTTP URL to load the file directly from storage.'
mimetype
Char
compute='_compute_extract_filename'
store=True
args: 'Mime Type'
name
Char
index=True
required=True
relative_path
Char
copy=False
help='Relative location for backend'
readonly=True
slug
Char
compute='_compute_slug'
help='Slug-ified name with ID for URL'
store=True
to_delete
Boolean
url
Char
compute='_compute_url'
help='HTTP accessible path to the file'
url_path
Char
compute='_compute_url_path'
help='Accessible path, no base URL'
get_from_slug_name_with_id(self, slug_name_with_id)
unlink(self)
write(self, vals)
data
Binary
file_id
Many2one → storage.file
file_name
Char
confirm(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/13.0/storage_file |
| VERSION | |
| VERSION | 1.5.1 |
| CATEGORY | |
| CATEGORY | Storage |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Laurent Mignon (ACSONE), Enric Tobella, Miquel Raïch, Sébastien BEAU, oca-travis, OCA-git-bot, Simone Orsi |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:16 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/server-env: - server_environment OCA/storage: - storage_backend odoo/odoo: - base - base_sparse_field |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python_slugify cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
storage_backend_view_form |
storage.backend | field | Inherits storage_backend.storage_backend_view_form | |
storage_file_view_form |
storage.file | form | New | |
storage_file_view_search |
storage.file | search | New | |
storage_file_view_tree |
storage.file | tree | New |
No new fields.
Public methods (1)render_qweb_pdf(self, res_ids=None, data=None)
base_url
Char
default=''
base_url_for_files
Char
compute='_compute_base_url_for_files'
store=True
filename_strategy
Selection
default='name_with_id'
help='Strategy to build the name of the file to be stored.\nName and ID: will store the file with its name + its id.\nSHA Hash: will use the hash of the file as filename (same method as the native attachment storage)'
selection=[('name_with_id', 'Name and ID'), ('hash', 'SHA hash')]
is_public
Boolean
default=False
help='Define if every files stored into this backend are public or not. Examples:\nPrivate: your file/image can not be displayed is the user is not logged (not available on other website);\nPublic: your file/image can be displayed if nobody is logged (useful to display files on external websites)'
served_by
Selection
default='odoo'
required=True
selection=[('odoo', 'Odoo'), ('external', 'External')]
url_include_directory_path
Boolean
default=False
help="Normally the directory_path it's for internal usage. If this flag is enabled the path will be used to compute the public URL."
action_recompute_base_url_for_files(self)
write(self, vals)
active
Boolean
default=True
backend_id
Many2one → storage.backend
index=True
required=True
args: 'storage.backend', 'Storage'
checksum
Char
index=True
readonly=True
size=40
args: 'Checksum/SHA1'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
data
Binary
compute='_compute_data'
help='Datas'
inverse='_inverse_data'
store=False
extension
Char
compute='_compute_extract_filename'
store=True
args: 'Extension'
file_size
Integer
file_type
Selection
filename
Char
compute='_compute_extract_filename'
store=True
args: 'Filename without extension'
human_file_size
Char
compute='_compute_human_file_size'
store=True
args: 'Human File Size'
mimetype
Char
compute='_compute_extract_filename'
store=True
args: 'Mime Type'
name
Char
index=True
required=True
relative_path
Char
help='Relative location for backend'
readonly=True
slug
Char
compute='_compute_slug'
help='Slug-ified name with ID for URL'
store=True
to_delete
Boolean
url
Char
compute='_compute_url'
help='HTTP accessible path to the file'
get_from_slug_name_with_id(self, slug_name_with_id)
unlink(self)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/12.0/storage_file |
| VERSION | |
| VERSION | 2.0.4 |
| CATEGORY | |
| CATEGORY | Storage |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Laurent Mignon (ACSONE), Denis Roussel, Stéphane Bidoul (ACSONE), Sébastien BEAU, oca-travis, OCA-git-bot, Tom Blauwendraat, Simone Orsi, hparfr |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:21 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/server-env: - server_environment OCA/storage: - storage_backend odoo/odoo: - base - base_sparse_field |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
slugify cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
storage_backend_view_form |
storage.backend | field | Inherits storage_backend.storage_backend_view_form | |
storage_file_view_form |
storage.file | form | New | |
storage_file_view_search |
storage.file | search | New | |
storage_file_view_tree |
storage.file | tree | New |
base_url
Char
default=''
filename_strategy
Selection
default='name_with_id'
help='Strategy to build the name of the file to be stored.\nName and ID: will store the file with its name + its id.\nSHA Hash: will use the hash of the file as filename (same method as the native attachment storage)'
selection=[('name_with_id', 'Name and ID'), ('hash', 'SHA hash')]
is_public
Boolean
default=False
help='Define if every files stored into this backend are public or not. Examples:\nPrivate: your file/image can not be displayed is the user is not logged (not available on other website);\nPublic: your file/image can be displayed if nobody is logged (useful to display files on external websites)'
served_by
Selection
default='odoo'
required=True
selection=[('odoo', 'Odoo'), ('external', 'External')]
url_include_directory_path
Boolean
default=False
help="Normally the directory_path it's for internal usage. If this flag is enabled the path will be used to compute the public URL."
No public methods.
active
Boolean
default=True
backend_id
Many2one → storage.backend
index=True
required=True
args: 'storage.backend', 'Storage'
checksum
Char
index=True
readonly=True
size=40
args: 'Checksum/SHA1'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
data
Binary
compute='_compute_data'
help='Datas'
inverse='_inverse_data'
store=False
extension
Char
compute='_compute_extract_filename'
store=True
args: 'Extension'
file_size
Integer
file_type
Selection
filename
Char
compute='_compute_extract_filename'
store=True
args: 'Filename without extension'
human_file_size
Char
compute='_compute_human_file_size'
store=True
args: 'Human File Size'
mimetype
Char
compute='_compute_extract_filename'
store=True
args: 'Mime Type'
name
Char
index=True
required=True
relative_path
Char
help='Relative location for backend'
readonly=True
to_delete
Boolean
url
Char
compute='_compute_url'
help='HTTP accessible path to the file'
get_from_slug_name_with_id(self, slug_name_with_id)
unlink(self)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/10.0/storage_file |
| VERSION | |
| VERSION | 1.1.2 |
| CATEGORY | |
| CATEGORY | Storage |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Renato Lima, GitHub, Laurent Mignon (ACSONE), Denis Roussel, Sébastien BEAU, Florian da Costa, beau sebastien, David Beal, oca-travis, OCA-git-bot, Benoit, Raph, François Honoré |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:19:59 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - component OCA/server-tools: - keychain OCA/storage: - storage_backend odoo/odoo: - base - base_setup - web_kanban - web |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
slugify cryptography cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
storage_backend_view_form |
storage.backend | field | Inherits storage_backend.storage_backend_view_form | |
storage_file_view_form |
storage.file | form | New | |
storage_file_view_search |
storage.file | search | New | |
storage_file_view_tree |
storage.file | tree | New |
base_url
Char
filename_strategy
Selection
default='name_with_id'
help='Strategy to build the name of the file to be stored.\nName and ID: will store the file with its name + its id.\nSHA Hash: will use the hash of the file as filename (same method as the native attachment storage)'
selection=[('name_with_id', 'Name and ID'), ('hash', 'SHA hash')]
is_public
Boolean
default=False
help='Define if every files stored into this backend are public or not. Examples:\nPrivate: your file/image can not be displayed is the user is not logged (not available on other website);\nPublic: your file/image can be displayed if nobody is logged (useful to display files on external websites)'
served_by
Selection
default='odoo'
required=True
selection=[('odoo', 'Odoo'), ('external', 'External')]
No public methods.
active
Boolean
default=True
backend_id
Many2one → storage.backend
index=True
required=True
args: 'storage.backend', 'Storage'
checksum
Char
index=True
readonly=True
size=40
args: 'Checksum/SHA1'
company_id
Many2one → res.company
default=<expr>
args: 'res.company', 'Company'
data
Binary
compute='_compute_data'
help='Datas'
inverse='_inverse_data'
store=False
extension
Char
compute='_compute_extract_filename'
store=True
args: 'Extension'
file_size
Integer
file_type
Selection
filename
Char
compute='_compute_extract_filename'
store=True
args: 'Filename without extension'
human_file_size
Char
compute='_compute_human_file_size'
store=True
args: 'Human File Size'
mimetype
Char
compute='_compute_extract_filename'
store=True
args: 'Mime Type'
name
Char
index=True
required=True
relative_path
Char
help='Relative location for backend'
readonly=True
to_delete
Boolean
url
Char
compute='_compute_url'
compute_sudo=True
help='HTTP accessible path to the file'
store=True
get_from_slug_name_with_id(self, slug_name_with_id)
unlink(self)
write(self, vals)