I am trying to create a model for product images in Odoo 10. A product image can have one original uploaded image and two computed versions: medium and small. This is the code I wrote:
# -*- coding: utf-8 -*-
from odoo import models, fields, api, tools
class ProductImage(models.Model):
_name = 'product_images.product_image'
_description = 'Product image'
name = fields.Char(string="Alternative text")
product_id = fields.Many2one('product.product', string='Product', ondelete='set null', index=True)
original_image = fields.Binary(string='Original image')
medium_image = fields.Binary(string='Medium image', compute='_resize_image', store=True)
small_image = fields.Binary(string='Small image', compute='_resize_image', store=True)
@api.depends('original_image')
def _resize_image(self):
for record in self.with_context(bin_size=False):
data = tools.image_get_resized_images(record.original_image)
record.medium_image = data['image_medium']
record.small_image = data['image_small']
When I change the original_image in the form view or in the Odoo shell, _resize_image() is called, but medium_image and small_image values are not saved. What do I miss?
after save the form don't you see the image shrinks??
Unfortunately not. I see empty values for the medium_image and small_image.
I also tried @api.onchange for the binary image, but that didn't work either.