Repository
OCA/storage · module folder · Try on Runboat
Module version
1.0.1
Category
Uncategorized
Folder size
0.1 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/storage
Last tracking update
2026-08-07 08:23:01
Authors
ACSONE SA/NV, Odoo Community Association (OCA)
Maintainers
ACSONE SA/NV, Odoo Community Association (OCA)
Committers
Daniel Reis, Weblate, OCA-git-bot, oca-ci, JasminSForgeFlow
Odoo dependencies
Python dependencies
fsspec>=2025.3.0, python_slugify, fsspec>=2024.5.0
System dependencies
None
Required by
None
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.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
fs_product_category_image_form_view product.category.fs.image.form fs.product.category.image form Inherits fs_base_multi_image.fs_image_relation_mixin_form_view
fs_product_image_form_view fs.product.image.form fs.product.image form Inherits fs_base_multi_image.fs_image_relation_mixin_form_view
fs_product_image_kanban_view fs.product.image.kanban fs.product.image kanban Inherits fs_base_multi_image.fs_image_relation_mixin_kanban_view
product_category_form_view product.category.form product.category form Inherits product.product_category_form_view
product_kanban_view product.product kanban Inherits product.product_kanban_view
product_normal_form_view product.product form Inherits product.product_normal_form_view
product_template_kanban_view product.template kanban Inherits product.product_template_kanban_view
product_template_only_form_view product.template form Inherits product.product_template_only_form_view
product_variant_easy_edit_view product.product Inherits product.product_variant_easy_edit_view
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (7)

New fields (2)
  • 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'
Public methods (0)

No public methods.

New fields (4)
  • 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'
Public methods (0)

No public methods.

New fields (1)
  • apply_on Selection
    ondelete={'product': 'cascade', 'category': 'cascade'} selection_add=[('product', 'Product'), ('category', 'Category')]
Public methods (0)

No public methods.

New fields (1)
  • image_ids One2many → fs.product.category.image
    comodel_name='fs.product.category.image' inverse_name='product_categ_id' string='Images'
Public methods (0)

No public methods.

New fields (2)
  • 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'
Public methods (0)

No public methods.

New fields (2)
  • 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'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • unlink(self)
  • write(self, values)

Loading…