From 41628fc7027df0a3f372869d2349601bbe2040dc Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Fri, 12 Apr 2013 15:08:56 +0200 Subject: [PATCH 1/2] [FIX]product: add store=dict to field name_template bzr revid: csn@openerp.com-20130412130856-3g5e67v2r7y6ep5v --- addons/product/product.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/addons/product/product.py b/addons/product/product.py index 82b37f7b9e8..4dbd0752911 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -523,6 +523,14 @@ class product_product(osv.osv): def _set_image(self, cr, uid, id, name, value, args, context=None): return self.write(cr, uid, [id], {'image': tools.image_resize_image_big(value)}, context=context) + def _get_name_template_ids(self, cr, uid, ids, context=None): + result = set() + for template in self.browse(cr, uid, ids, context=context): + template_ids = self.pool.get('product.product').search(cr, uid, [('product_tmpl_id','=',template.id)]) + for el in template_ids: + result.add(el) + return list(result) + _defaults = { 'active': lambda *a: 1, 'price_extra': lambda *a: 0.0, @@ -554,7 +562,11 @@ class product_product(osv.osv): 'price_extra': fields.float('Variant Price Extra', digits_compute=dp.get_precision('Product Price')), 'price_margin': fields.float('Variant Price Margin', digits_compute=dp.get_precision('Product Price')), 'pricelist_id': fields.dummy(string='Pricelist', relation='product.pricelist', type='many2one'), - 'name_template': fields.related('product_tmpl_id', 'name', string="Template Name", type='char', size=128, store=True, select=True), + 'name_template': fields.related('product_tmpl_id', 'name', string="Template Name", type='char', size=128, store={ + 'product.template': (_get_name_template_ids, ['name'], 10), + 'product.product': (lambda self, cr, uid, ids, c={}: ids, [], 10), + + }, select=True), 'color': fields.integer('Color Index'), # image: all image fields are base64 encoded and PIL-supported 'image': fields.binary("Image", From f25c5d857b3432db99a2e422b35396db64aed652 Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Mon, 15 Apr 2013 12:21:21 +0200 Subject: [PATCH 2/2] [REF]product: remove one extra loop bzr revid: csn@openerp.com-20130415102121-u74t7zd3zct3q3ts --- addons/product/product.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/addons/product/product.py b/addons/product/product.py index 4dbd0752911..239fc940b6b 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -525,10 +525,9 @@ class product_product(osv.osv): def _get_name_template_ids(self, cr, uid, ids, context=None): result = set() - for template in self.browse(cr, uid, ids, context=context): - template_ids = self.pool.get('product.product').search(cr, uid, [('product_tmpl_id','=',template.id)]) - for el in template_ids: - result.add(el) + template_ids = self.pool.get('product.product').search(cr, uid, [('product_tmpl_id', 'in', ids)]) + for el in template_ids: + result.add(el) return list(result) _defaults = {