From b7d1b26b97fa234539eb2bf75efd023a1a160f09 Mon Sep 17 00:00:00 2001 From: Valentin Chevalier Date: Tue, 9 Apr 2024 16:33:26 +0200 Subject: [PATCH] [REV] website_sale: open configurator with only no variants attributes This reverts commit 436c1c6. The commit was fixing an issue where the product configurator dialog would not be shown for custom attribute, no variant, and dynamic attribute using the quick buy add button on the '/shop' page. The commit introduces an undesirable behavior: the product configurator would always be open if customers choose none of the multi-checkbox options. closes odoo/odoo#161144 Signed-off-by: Victor Feyens (vfe) --- .../controllers/main.py | 2 +- ...le_configurator_only_dynamic_attributes.js | 29 ------- ...configurator_only_no_variant_attributes.js | 29 ------- ...le_configurator_single_custom_attribute.js | 29 ------- .../tests/test_website_sale_configurator.py | 84 ------------------- .../views/templates.xml | 2 +- 6 files changed, 2 insertions(+), 173 deletions(-) delete mode 100644 addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_only_dynamic_attributes.js delete mode 100644 addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_only_no_variant_attributes.js delete mode 100644 addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_single_custom_attribute.js diff --git a/addons/website_sale_product_configurator/controllers/main.py b/addons/website_sale_product_configurator/controllers/main.py index 055a06d17bc..343ec003402 100644 --- a/addons/website_sale_product_configurator/controllers/main.py +++ b/addons/website_sale_product_configurator/controllers/main.py @@ -22,7 +22,7 @@ class WebsiteSaleProductConfiguratorController(Controller): already_configured = bool(combination) if not force_dialog and not has_optional_products and ( - not product.has_configurable_attributes or already_configured + product.product_variant_count <= 1 or already_configured ): # The modal is not shown if there are no optional products and # the main product either has no variants or is already configured diff --git a/addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_only_dynamic_attributes.js b/addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_only_dynamic_attributes.js deleted file mode 100644 index a918893f14e..00000000000 --- a/addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_only_dynamic_attributes.js +++ /dev/null @@ -1,29 +0,0 @@ -/** @odoo-module **/ - -import { registry } from "@web/core/registry"; -import tourUtils from "@website_sale/js/tours/tour_utils"; - -registry.category("web_tour.tours").add('tour_configurator_quick_add_only_no_dynamic_attributes', { - test: true, - url: '/shop', - steps: () => [ - ...tourUtils.searchProduct("Short (TEST)"), - { - content: "open configurator", - trigger: '.oe_product:has(a:contains("Short (TEST)")) div.o_wsale_product_btn a', - }, - { - content: "select M dynamic attribute", - trigger: '.oe_advanced_configurator_modal label:contains("M dynamic") input', - }, - { - content: "Go through the modal window of the product configurator", - extra_trigger: '.oe_advanced_configurator_modal strong:contains("Short (TEST) (M dynamic)")', - trigger: 'button span:contains(Proceed to Checkout)', - }, - tourUtils.assertCartContains({ - productName: 'Short (TEST) (M dynamic)', - backend: false, - }), - ] -}); diff --git a/addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_only_no_variant_attributes.js b/addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_only_no_variant_attributes.js deleted file mode 100644 index 434fcf0823f..00000000000 --- a/addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_only_no_variant_attributes.js +++ /dev/null @@ -1,29 +0,0 @@ -/** @odoo-module **/ - -import { registry } from "@web/core/registry"; -import tourUtils from "@website_sale/js/tours/tour_utils"; - -registry.category("web_tour.tours").add('tour_configurator_quick_add_only_no_variant_attributes', { - test: true, - url: '/shop', - steps: () => [ - ...tourUtils.searchProduct("Short (TEST)"), - { - content: "open configurator", - trigger: '.oe_product:has(a:contains("Short (TEST)")) div.o_wsale_product_btn a', - }, - { - content: "select M dynamic attribute", - trigger: '.oe_advanced_configurator_modal label:contains("M never") input', - }, - { - content: "Go through the modal window of the product configurator", - trigger: 'button span:contains(Continue Shopping)', - }, - { - content: "check that the novariants/custom attributes are displayed.", - trigger: '.toast-body span.text-muted.small:contains("Never attribute size: M never")', - isCheck: true, - }, - ] -}); diff --git a/addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_single_custom_attribute.js b/addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_single_custom_attribute.js deleted file mode 100644 index 31e4736fa21..00000000000 --- a/addons/website_sale_product_configurator/static/tests/tours/website_sale_configurator_single_custom_attribute.js +++ /dev/null @@ -1,29 +0,0 @@ -/** @odoo-module **/ - -import { registry } from "@web/core/registry"; -import tourUtils from "@website_sale/js/tours/tour_utils"; - -registry.category("web_tour.tours").add('tour_configurator_quick_add_single_custom_attribute', { - test: true, - url: '/shop', - steps: () => [ - ...tourUtils.searchProduct("Short (TEST)"), - { - content: "open configurator", - trigger: '.oe_product:has(a:contains("Short (TEST)")) div.o_wsale_product_btn a', - }, - { - trigger: 'input.variant_custom_value', - run: 'text TEST', - }, - { - content: "Go through the modal window of the product configurator", - trigger: 'button span:contains(Continue Shopping)', - }, - { - content: "check that the novariants/custom attributes are displayed.", - trigger: '.toast-body span.text-muted.small:contains("Always attribute size: Yes never custom: TEST")', - isCheck: true, - }, - ] -}); diff --git a/addons/website_sale_product_configurator/tests/test_website_sale_configurator.py b/addons/website_sale_product_configurator/tests/test_website_sale_configurator.py index faa2cec73ee..06a12deace0 100644 --- a/addons/website_sale_product_configurator/tests/test_website_sale_configurator.py +++ b/addons/website_sale_product_configurator/tests/test_website_sale_configurator.py @@ -1,6 +1,5 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo.fields import Command from odoo.tests import tagged from odoo.addons.base.tests.common import HttpCaseWithUserDemo, HttpCaseWithUserPortal @@ -147,86 +146,3 @@ class TestWebsiteSaleProductConfigurator(TestProductConfiguratorCommon, HttpCase new_sale_order = self.env['sale.order'].search([]) - old_sale_order new_order_line = new_sale_order.order_line self.assertEqual(new_order_line.name, 'Short (TEST) (M always, M dynamic)\n\nNever attribute size: M never\nNever attribute size custom: Yes never custom: TEST') - - def test_03_only_no_variant_attributes(self): - """ Test that the configurator dialog is opened when a product with only no variant - attributes is added from the /shop page. - """ - self.env.ref('website_sale.products_add_to_cart').active = True # Enable quick add button - no_variant_attribute = self.env['product.attribute'].create({ - 'name': 'Never attribute size', - 'display_type': 'radio', - 'create_variant': 'no_variant', - 'value_ids': [ - Command.create({'name': 'S never'}), - Command.create({'name': 'M never'}), - ] - }) - self.env['product.template'].create({ - 'name': 'Short (TEST)', - 'website_published': True, - 'attribute_line_ids': [ - Command.create({ - 'attribute_id': no_variant_attribute.id, - 'value_ids': [Command.set(no_variant_attribute.value_ids.ids)], - }) - ], - }) - - self.start_tour("/shop", 'tour_configurator_quick_add_only_no_variant_attributes') - - def test_04_only_dynamic_attributes(self): - """ Test that the configurator dialog is opened when a product with only dynamic - attributes is added from the /shop page. - """ - self.env.ref('website_sale.products_add_to_cart').active = True # Enable quick add button - dynamic_attribute = self.env['product.attribute'].create({ - 'name': 'Dynamic attribute size', - 'display_type': 'radio', - 'create_variant': 'dynamic', - 'value_ids': [ - Command.create({'name': 'S dynamic'}), - Command.create({'name': 'M dynamic'}), - ] - }) - self.env['product.template'].create({ - 'name': 'Short (TEST)', - 'website_published': True, - 'attribute_line_ids': [ - Command.create({ - 'attribute_id': dynamic_attribute.id, - 'value_ids': [Command.set(dynamic_attribute.value_ids.ids)], - }) - ], - }) - - self.start_tour("/shop", 'tour_configurator_quick_add_only_no_dynamic_attributes') - - def test_05_single_custom_attribute(self): - """ Test that the configurator dialog is opened when a product with a single custom - attributes is added from the /shop page. - """ - self.env.ref('website_sale.products_add_to_cart').active = True # Enable quick add button - attribute = self.env['product.attribute'].create({ - 'name': 'Always attribute size', - 'display_type': 'radio', - 'create_variant': 'always', - 'value_ids': [ - Command.create({ - 'name': 'Yes never custom', - 'is_custom': True, - }), - ] - }) - self.env['product.template'].create({ - 'name': 'Short (TEST)', - 'website_published': True, - 'attribute_line_ids': [ - Command.create({ - 'attribute_id': attribute.id, - 'value_ids': [Command.set(attribute.value_ids.ids)], - }) - ], - }) - - self.start_tour("/shop", 'tour_configurator_quick_add_single_custom_attribute') diff --git a/addons/website_sale_product_configurator/views/templates.xml b/addons/website_sale_product_configurator/views/templates.xml index 3fe01e55e5f..775ed93bcf7 100644 --- a/addons/website_sale_product_configurator/views/templates.xml +++ b/addons/website_sale_product_configurator/views/templates.xml @@ -77,7 +77,7 @@ - +