From 34c8dab3c7b82acb53d8b4f3d85dc88181d03b07 Mon Sep 17 00:00:00 2001 From: Shruti Singh Date: Tue, 11 Feb 2020 12:46:18 +0530 Subject: [PATCH 01/15] [FIX]remove first line for the license and add comments --- website_product_configurator/models/sale_order.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/website_product_configurator/models/sale_order.py b/website_product_configurator/models/sale_order.py index f31ac51f..6c38cc4b 100644 --- a/website_product_configurator/models/sale_order.py +++ b/website_product_configurator/models/sale_order.py @@ -1,4 +1,3 @@ -# Part of Odoo. See LICENSE file for full copyright and licensing details. import logging from odoo import api, models, _ from odoo.http import request @@ -17,6 +16,7 @@ def _cart_update(self, product_id=None, line_id=None, self.ensure_one() product_context = dict(self.env.context) product_context.setdefault('lang', self.sudo().partner_id.lang) + # BizzAppDev Customization cfg_product = self.env['product.product'].with_context( product_context ).browse(int(product_id)) @@ -28,6 +28,7 @@ def _cart_update(self, product_id=None, line_id=None, set_qty=set_qty, kwargs=kwargs ) + # BizzAppDev Customization End SaleOrderLineSudo = self.env['sale.order.line'].sudo().\ with_context(product_context) @@ -85,9 +86,12 @@ def _cart_update(self, product_id=None, line_id=None, combination = product_template._get_closest_possible_combination( received_combination) + + # BizzAppDev Customization # prevent to change variant in cart # get or create (if dynamic) the correct variant # product = product_template._create_product_variant(combination) + # BizzAppDev Customization End if not product: raise UserError(_( @@ -204,6 +208,7 @@ def _cart_update(self, product_id=None, line_id=None, 'quantity': quantity, 'date': order.date_order, 'pricelist': order.pricelist_id.id, + 'force_company': order.company_id.id, }) product = self.env['product.product'].with_context( product_context).browse(product_id) From 45b0b9f8401ffa735e2c85ab3cfce8a006e24342 Mon Sep 17 00:00:00 2001 From: Shruti Singh Date: Wed, 12 Feb 2020 12:45:46 +0530 Subject: [PATCH 02/15] [FIX]flake8 --- website_product_configurator/models/sale_order.py | 1 - 1 file changed, 1 deletion(-) diff --git a/website_product_configurator/models/sale_order.py b/website_product_configurator/models/sale_order.py index 6c38cc4b..4f808715 100644 --- a/website_product_configurator/models/sale_order.py +++ b/website_product_configurator/models/sale_order.py @@ -86,7 +86,6 @@ def _cart_update(self, product_id=None, line_id=None, combination = product_template._get_closest_possible_combination( received_combination) - # BizzAppDev Customization # prevent to change variant in cart # get or create (if dynamic) the correct variant From 805e4a17ea7daa7107c7b47f9418c90f498f4813 Mon Sep 17 00:00:00 2001 From: Shruti Singh Date: Thu, 20 Feb 2020 13:01:13 +0530 Subject: [PATCH 03/15] [FIX]fix test --- .../tests/test_product_config.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/product_configurator/tests/test_product_config.py b/product_configurator/tests/test_product_config.py index e868371a..68e39408 100644 --- a/product_configurator/tests/test_product_config.py +++ b/product_configurator/tests/test_product_config.py @@ -552,14 +552,14 @@ def test_18_onchange_attribute(self): self.attribute_vals_2.id])], 'domain_id': self.productConfigDomainId.id }) - with self.assertRaises(ValidationError): - config_line.onchange_attribute() - - self.assertFalse( - config_line.value_ids, - 'Error: If value_ids True\ - Method: onchange_attribute()' - ) + # with self.assertRaises(ValidationError): + # config_line.onchange_attribute() + + # self.assertFalse( + # config_line.value_ids, + # 'Error: If value_ids True\ + # Method: onchange_attribute()' + # ) def test_19_eval(self): self.attr_color.custom_type = 'binary' From 90fe1c6ab78e2e3a354db7a65054f70bee236c3b Mon Sep 17 00:00:00 2001 From: Shruti Singh Date: Thu, 5 Mar 2020 21:58:06 +0530 Subject: [PATCH 04/15] [FIX]fix test case for onchange_attribute --- .../tests/test_product_config.py | 38 +++++++++++++++---- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/product_configurator/tests/test_product_config.py b/product_configurator/tests/test_product_config.py index 68e39408..a2e10798 100644 --- a/product_configurator/tests/test_product_config.py +++ b/product_configurator/tests/test_product_config.py @@ -552,14 +552,36 @@ def test_18_onchange_attribute(self): self.attribute_vals_2.id])], 'domain_id': self.productConfigDomainId.id }) - # with self.assertRaises(ValidationError): - # config_line.onchange_attribute() - - # self.assertFalse( - # config_line.value_ids, - # 'Error: If value_ids True\ - # Method: onchange_attribute()' - # ) + + line_vals = { + 'product_tmpl_id': self.product_tmpl_id.id, + 'attribute_line_id': self.attributeLine1.id, + 'value_ids': [(6, 0, [ + self.attribute_vals_1.id, + self.attribute_vals_2.id])], + 'domain_id': self.productConfigDomainId.id + } + order_line_obj = self.env['product.config.line'] + specs = order_line_obj._onchange_spec() + updates = order_line_obj.onchange( + line_vals, ['attribute_line_id'], specs + ) + values = updates.get('value', {}) + for name, val in values.items(): + if isinstance(val, tuple): + values[name] = val[0] + + self.assertFalse( + values.get('domain_id'), + 'Error: If value_ids True\ + Method: onchange_attribute()' + ) + self.assertEqual( + values.get('value_ids')[0], + (5,), + 'Error: If value_ids True\ + Method: onchange_attribute()' + ) def test_19_eval(self): self.attr_color.custom_type = 'binary' From 27d8d69de0ca16bc0b1c75dcb703ed8983fb174b Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 7 May 2020 14:19:00 +0200 Subject: [PATCH 05/15] Make the config_session store json-serializable / string key vs int & search by passed user_id (if any --- product_configurator/models/product_config.py | 16 +++++++++++----- website_product_configurator/controllers/main.py | 4 ++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/product_configurator/models/product_config.py b/product_configurator/models/product_config.py index c84bcc0e..5d8a00f5 100644 --- a/product_configurator/models/product_config.py +++ b/product_configurator/models/product_config.py @@ -911,10 +911,14 @@ def get_variant_vals(self, value_ids=None, custom_vals=None, **kwargs): @api.multi def get_session_search_domain(self, product_tmpl_id, state='draft', - parent_id=None): + parent_id=None, user_id=None): + + if not user_id: + user_id = self.env.uid + domain = [ ('product_tmpl_id', '=', product_tmpl_id), - ('user_id', '=', self.env.uid), + ('user_id', '=', user_id), ('state', '=', state), ] if parent_id: @@ -1422,10 +1426,11 @@ def search_variant( return products @api.multi - def search_session(self, product_tmpl_id, parent_id=None): + def search_session(self, product_tmpl_id, parent_id=None, user_id=None): domain = self.get_session_search_domain( product_tmpl_id=product_tmpl_id, - parent_id=parent_id + parent_id=parent_id, + user_id=user_id ) session = self.search(domain, order='create_date desc', limit=1) return session @@ -1436,7 +1441,8 @@ def create_get_session(self, product_tmpl_id, parent_id=None, if not force_create: session = self.search_session( product_tmpl_id=product_tmpl_id, - parent_id=parent_id + parent_id=parent_id, + user_id=user_id, ) if session: return session diff --git a/website_product_configurator/controllers/main.py b/website_product_configurator/controllers/main.py index 3e90e7fc..9f5e766b 100644 --- a/website_product_configurator/controllers/main.py +++ b/website_product_configurator/controllers/main.py @@ -30,7 +30,7 @@ def get_config_session(self, product_tmpl_id): {} ) is_public_user = request.env.user.has_group('base.group_public') - cfg_session_id = product_config_sessions.get(product_tmpl_id.id) + cfg_session_id = product_config_sessions.get(str(product_tmpl_id.id)) if cfg_session_id: cfg_session = cfg_session_obj.browse(int(cfg_session_id)) @@ -42,7 +42,7 @@ def get_config_session(self, product_tmpl_id): user_id=request.env.user.id ) product_config_sessions.update({ - product_tmpl_id.id: cfg_session.id + str(product_tmpl_id.id): cfg_session.id }) request.session['product_config_session'] = product_config_sessions From bd73d4a3b08596396a81fe4cff5fd39ea38f3da5 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 7 May 2020 14:41:42 +0200 Subject: [PATCH 06/15] Fix missing session update in cfg_session method --- website_product_configurator/controllers/main.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website_product_configurator/controllers/main.py b/website_product_configurator/controllers/main.py index 9f5e766b..e34d578e 100644 --- a/website_product_configurator/controllers/main.py +++ b/website_product_configurator/controllers/main.py @@ -513,12 +513,12 @@ def cfg_session(self, product_id, **post): key=lambda obj: obj.attribute_id.sequence ) pricelist = get_pricelist() - product_config_session = request.session.get('product_config_session') - if (product_config_session and - product_config_session.get(product_tmpl_id.id)): - + product_config_session = request.session.get( + 'product_config_session', {} + ) + if product_config_session.get(str(product_tmpl_id.id)): # Bizzappdev end code - del product_config_session[product_tmpl_id.id] + del product_config_session[str(product_tmpl_id.id)] request.session['product_config_session'] = product_config_session values = { 'product_id': product_id, From 958dab69a7c1ee001f63afdf03e82f8bf4105c0b Mon Sep 17 00:00:00 2001 From: Paul Catinean Date: Thu, 7 May 2020 14:00:47 +0000 Subject: [PATCH 07/15] Removing unused variables --- product_configurator/tests/test_product_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_configurator/tests/test_product_config.py b/product_configurator/tests/test_product_config.py index a2e10798..8e4c5047 100644 --- a/product_configurator/tests/test_product_config.py +++ b/product_configurator/tests/test_product_config.py @@ -544,7 +544,7 @@ def test_18_onchange_attribute(self): }) self.productConfigDomainId.compute_domain() # create attribute value line 1 - config_line = self.env['product.config.line'].create({ + self.env['product.config.line'].create({ 'product_tmpl_id': self.product_tmpl_id.id, 'attribute_line_id': self.attributeLine1.id, 'value_ids': [(6, 0, [ From 9ea1166215d2e8e62ce2201937c423195e6f00b7 Mon Sep 17 00:00:00 2001 From: Shruti Singh Date: Sun, 28 Jun 2020 00:24:35 +0530 Subject: [PATCH 08/15] [FIX]hide attribute if no value is available --- .../data/config_form_templates.xml | 8 ++++---- website_product_configurator/static/src/js/config_form.js | 8 ++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/website_product_configurator/data/config_form_templates.xml b/website_product_configurator/data/config_form_templates.xml index 9b2e5c86..da45e2ad 100644 --- a/website_product_configurator/data/config_form_templates.xml +++ b/website_product_configurator/data/config_form_templates.xml @@ -277,8 +277,8 @@ - -
+ +
+ t-att-data-old-val-id="(value_ids & line.value_ids) and (value_ids & line.value_ids).ids[0] or ''" + t-att-data-attr-invisible="line.invisible">