| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/17.0/fs_product_multi_image |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ACSONE SA/NV |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ACSONE SA/NV |
| COMMITTERS | |
| COMMITTERS | Daniel Reis, Weblate, OCA-git-bot, oca-ci, JasminSForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:08 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/server-env: - server_environment OCA/storage: - fs_base_multi_image - fs_image - fs_file - fs_attachment - fs_storage - image_tag odoo/odoo: - base - base_sparse_field - web - product - base_setup - bus - web_tour - uom - sales_team |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
fsspec>=2025.3.0 python_slugify fsspec>=2024.5.0 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | Attach images to products and categories and store them on an external filesystem instead of the database. This addon is a drop-in replacement for the **storage_image_product** addon. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fs_product_category_image_form_view |
product.category.fs.image.form | fs.product.category.image | group | Inherits fs_base_multi_image.fs_image_relation_mixin_form_view |
fs_product_image_form_view |
fs.product.image.form | fs.product.image | group | Inherits fs_base_multi_image.fs_image_relation_mixin_form_view |
fs_product_image_kanban_view |
fs.product.image.kanban | fs.product.image | xpath | Inherits fs_base_multi_image.fs_image_relation_mixin_kanban_view |
product_category_form_view |
product.category.form | product.category | div | Inherits product.product_category_form_view |
product_kanban_view |
product.product | xpath | Inherits product.product_kanban_view | |
product_normal_form_view |
product.product | field | Inherits product.product_normal_form_view | |
product_template_kanban_view |
product.template | xpath | Inherits product.product_template_kanban_view | |
product_template_only_form_view |
product.template | field | Inherits product.product_template_only_form_view | |
product_variant_easy_edit_view |
product.product | field | Inherits product.product_variant_easy_edit_view |
product_categ_id
Many2one → product.category
comodel_name='product.category'
index=True
ondelete='cascade'
string='Product Category'
tag_id
Many2one → image.tag
domain=[('apply_on', '=', 'category')]
index=True
string='Tag'
args: 'image.tag'
No public methods.
attribute_value_ids
Many2many → product.attribute.value
domain="[('id', 'in', available_attribute_value_ids)]"
string='Attributes'
args: 'product.attribute.value'
available_attribute_value_ids
Many2many → product.attribute.value
compute='_compute_available_attribute'
string='Available Attributes'
args: 'product.attribute.value'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
index=True
ondelete='cascade'
string='Product Template'
tag_id
Many2one → image.tag
domain=[('apply_on', '=', 'product')]
index=True
string='Tag'
args: 'image.tag'
No public methods.
apply_on
Selection
ondelete={'product': 'cascade', 'category': 'cascade'}
selection_add=[('product', 'Product'), ('category', 'Category')]
No public methods.
image_ids
One2many → fs.product.category.image
comodel_name='fs.product.category.image'
inverse_name='product_categ_id'
string='Images'
No public methods.
main_image_id
Many2one → fs.product.image
comodel_name='fs.product.image'
compute='_compute_main_image_id'
store=True
string='Main Image'
variant_image_ids
Many2many → fs.product.image
compute='_compute_variant_image_ids'
store=True
string='Variant Images'
args: 'fs.product.image'
No public methods.
image_ids
One2many → fs.product.image
comodel_name='fs.product.image'
inverse_name='product_tmpl_id'
string='Images'
main_image_id
Many2one → fs.product.image
comodel_name='fs.product.image'
compute='_compute_main_image_id'
store=True
string='Main Image'
No public methods.
No new fields.
Public methods (2)unlink(self)
write(self, values)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/storage |
| GIT | |
| GIT | https://github.com/OCA/storage.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/storage/tree/16.0/fs_product_multi_image |
| VERSION | |
| VERSION | 1.1.6 |
| CATEGORY | |
| CATEGORY | Uncategorized |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ACSONE SA/NV |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ACSONE SA/NV |
| COMMITTERS | |
| COMMITTERS | Laurent Mignon (ACSONE), Denis Roussel, Weblate, OCA-git-bot, Benjamin Willig, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/storage |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:52 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/server-env: - server_environment OCA/storage: - fs_base_multi_image - fs_image - fs_file - fs_attachment - fs_storage - image_tag odoo/odoo: - base - base_sparse_field - product - base_setup - web - bus - web_tour - uom - sales_team |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
fsspec>=2025.3.0 python_slugify fsspec>=2024.5.0 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
fs_product_category_image_form_view |
product.category.fs.image.form | fs.product.category.image | group | Inherits fs_base_multi_image.fs_image_relation_mixin_form_view |
fs_product_category_image_kanban_view |
fs.product.category.image.kanban | fs.product.category.image | xpath | Inherits fs_base_multi_image.fs_image_relation_mixin_kanban_view |
fs_product_image_form_view |
fs.product.image.form | fs.product.image | group | Inherits fs_base_multi_image.fs_image_relation_mixin_form_view |
fs_product_image_kanban_view |
fs.product.image.kanban | fs.product.image | xpath | Inherits fs_base_multi_image.fs_image_relation_mixin_kanban_view |
product_category_form_view |
product.category.form | product.category | div | Inherits product.product_category_form_view |
product_kanban_view |
product.product | xpath | Inherits product.product_kanban_view | |
product_normal_form_view |
product.product | field | Inherits product.product_normal_form_view | |
product_template_kanban_view |
product.template | xpath | Inherits product.product_template_kanban_view | |
product_template_only_form_view |
product.template | field | Inherits product.product_template_only_form_view | |
product_variant_easy_edit_view |
product.product | field | Inherits product.product_variant_easy_edit_view |
product_categ_id
Many2one → product.category
comodel_name='product.category'
index=True
ondelete='cascade'
string='Product Category'
tag_id
Many2one → image.tag
domain=[('apply_on', '=', 'category')]
index=True
string='Tag'
args: 'image.tag'
No public methods.
attribute_value_ids
Many2many → product.attribute.value
domain="[('id', 'in', available_attribute_value_ids)]"
string='Attributes'
args: 'product.attribute.value'
available_attribute_value_ids
Many2many → product.attribute.value
compute='_compute_available_attribute'
string='Available Attributes'
args: 'product.attribute.value'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
index=True
ondelete='cascade'
string='Product Template'
tag_id
Many2one → image.tag
domain=[('apply_on', '=', 'product')]
index=True
string='Tag'
args: 'image.tag'
No public methods.
apply_on
Selection
ondelete={'product': 'cascade', 'category': 'cascade'}
selection_add=[('product', 'Product'), ('category', 'Category')]
No public methods.
image_ids
One2many → fs.product.category.image
comodel_name='fs.product.category.image'
inverse_name='product_categ_id'
string='Images'
No public methods.
main_image_id
Many2one → fs.product.image
comodel_name='fs.product.image'
compute='_compute_main_image_id'
store=True
string='Main Image'
variant_image_ids
Many2many → fs.product.image
compute='_compute_variant_image_ids'
store=True
string='Variant Images'
args: 'fs.product.image'
No public methods.
image_ids
One2many → fs.product.image
comodel_name='fs.product.image'
inverse_name='product_tmpl_id'
string='Images'
main_image_id
Many2one → fs.product.image
comodel_name='fs.product.image'
compute='_compute_main_image_id'
store=True
string='Main Image'
No public methods.
No new fields.
Public methods (2)unlink(self)
write(self, values)