Hello there,
My post will be long. Don't have the choice. I don't manage to do this.
I have installed the example code of my friend Yenthe :
https://github.com/Yenthe666/Odoo_Samples/tree/master/upload_imagesNow, I'm trying to use this code in product.product and it doesn't work.
In the file openerp/addons/product/product.py :
I have added this code in the product.product class.
class product_product(osv.osv):
_name = "product.product"
_description = "Product"
_inherits = {'product.template': 'product_tmpl_id'}
_inherit = ['mail.thread']
_order = 'default_code,name_template'
def _get_image_variant2(self, cr, uid, ids, name, args, context=None):
_logger.error("_get_image_variant2")
result = dict.fromkeys(ids, False)
for obj in self.browse(cr, uid, ids, context=context):
result[obj.id] = tools.image_get_resized_images(obj.image_variant)
return result
def _set_image_variant2(self, cr, uid, id, name, value, args, context=None):
_logger.error("_set_image_variant2")
return self.write(cr, uid, [id], {'image_variant': tools.image_resize_image_big(value)}, context=context)
'image_variant': fields.binary("Variant Image",
help="This field holds the image used as image for the product variant, limited to 1024x1024px."),
'image_variant_medium': fields.function(_get_image_variant2, fnct_inv=_set_image_variant2,
string="Image variant medium (auto-resized to 128x128):", type="binary", multi="_get_image_variant2",
store={
'product.product': (lambda self, cr, uid, ids, c={}: ids, ['image_variant'], 10),
},help="Medium-sized image of the category. It is automatically "\
"resized as a 128x128px image, with aspect ratio preserved. "\
"Use this field in form views or some kanban views."),
'image_variant_small': fields.function(_get_image_variant2, fnct_inv=_set_image_variant2,
string="Image variant small (auto-resized to 64x64):", type="binary", multi="_get_image_variant2",
store={
'product.product': (lambda self, cr, uid, ids, c={}: ids, ['image_variant'], 10),
},
help="Small-sized image of the category. It is automatically "\
"resized as a 64x64px image, with aspect ratio preserved. "\
"Use this field anywhere a small image is required.")
In the view product.product_normal_form_view :
I added two new fields.
<field name="image_variant_small" widget="image" class="oe_avatar oe_left"/>
<field name="image_variant_medium" widget="image" class="oe_avatar oe_left"/>
See result at the bottom right of this screenshot.
The problem :
When I edit this product.product record, I select a new image in one of these two new fields (image variant small or image variant medium), the image appears. Then, I click on save button. My two new fields stay blank... Like the preview above! Grrr!
Only the original image_medium field changes. The new image only appears there at the top left!
What I do wrong?
Thanks everybody to help! If it miss something in this post, I can add it quickly. Thanks!
Update #1 (january 1, 2016)
See the name of each one of the image fields. I think that each fields have a different name. Is it what it should be?
Update #2 (january 1, 2016)
In the module of Yenthe, upload_images, i have printed the context in the _set_images method when I save a new image :
context :: {'lang': 'en_US', 'params': {'action': 1827}, 'tz': 'America/Montreal', 'uid': 1}
In the file odoo-8.0-20151003/openerp/addons/product/product.py, I have also printed the context in the _set_image_variant2 method
(see above for this method) when I save a new image in within one of my two new fields of the product.product view above :
context :: {'lang': 'en_US', 'tz': 'America/Montreal', 'uid': 1, 'active_model': 'product.template', 'params': {'action': 348}, 'search_disable_custom_filters': True, 'search_default_product_tmpl_id': [491], 'active_ids': [491], 'active_id': 491}
What I see special there???? In the context of my new _set_image_variant method, there is an 'active_model' : 'product.template'... Should it not be setted at product.product rather?
May be this is the problem?