Odoo Multiple Images Base
5 March, 2021 by
Odoo Multiple Images Base
Administrator

This module extends the functionality of any model to support multiple images (a gallery) attached to it and allow you to manage them.

Installation

This module adds abstract models to work on. Its sole purpose is to serve as base for other modules that implement galleries, so if you install this one manually you will notice no change. You should install any other module based on this one and this will get installed automatically.

Usage

To manage all stored images, you need to:

  • Go to Settings > Technical > Multi images.

… but you probably prefer to manage them from the forms supplied by submodules that inherit this behavior.

Development

To develop a module based on this one:

  • See module product_multi_image as an example.

  • You have to inherit model base_multi_image.owner to the model that needs the gallery:

    class MyOwner(models.Model):
        _name = "my.model.name"
        _inherit = ["my.model.name", "base_multi_image.owner"]
    
        # If you need this, you will need ``post_init_hook_for_submodules``
        old_image_field = fields.Binary(related="image_main", store=False)
    
  • Somewhere in the owner view, add:

    <field
        name="image_ids"
        nolabel="1"
        context="{
            'default_owner_model': 'my.model.name',
            'default_owner_id': id,
        }"
        mode="kanban"/>
    
  • If the model you are extending already had an image field, and you want to trick Odoo to make those images to multi-image mode, you will need to make use of the provided :meth:`~.hooks.pre_init_hook_for_submodules` and:meth:`~.hooks.uninstall_hook_for_submodules`, like the product_multi_image module does:

    try:
        from openerp.addons.base_multi_image.hooks import \
            pre_init_hook_for_submodules
    except:
        pass
    
    
    def pre_init_hook(cr):
        """Transform single into multi images."""
        pre_init_hook_for_submodules(cr, "product.template", "image")
        pre_init_hook_for_submodules(cr, "product.product", "image_variant")
    
    
    def uninstall_hook(cr, registry):
        """Remove multi images for models that no longer use them."""
        uninstall_hook_for_submodules(cr, registry, "product.template")
        uninstall_hook_for_submodules(cr, registry, "product.product")
    
https://apps.openerp.com/apps/modules/9.0/base_multi_image/