This question has been flagged
1 Reply
7659 Views

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?





Avatar
Discard
Best Answer

Is it not as with the fields ? Only one field can have a value if there is more than one with the same name in one view. Every image must have a  unique field name.


Avatar
Discard
Author

My post now has an update #1. Thanks for your answer.

So top two images works fine, only those in right bottom corner won't ?

Author

exactly like you say. I saw something in the log. I update #2 now.