Skip to content

Commit

Permalink
Merge PR #975 into 16.0
Browse files Browse the repository at this point in the history
Signed-off-by pedrobaeza
  • Loading branch information
OCA-git-bot committed Dec 31, 2024
2 parents a1ff3c0 + efbb7a1 commit bcc8b92
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 6 deletions.
1 change: 1 addition & 0 deletions website_sale_product_assortment/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"website_sale_product_assortment/static/src/js/no_purchase_tour.js",
"website_sale_product_assortment/static/src/js/no_restriction_tour.js",
"website_sale_product_assortment/static/src/js/no_show_tour.js",
"website_sale_product_assortment/static/src/js/no_restriction_no_show_tour.js",
],
},
}
6 changes: 5 additions & 1 deletion website_sale_product_assortment/controllers/website_sale.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,19 @@ def _get_products_allowed(self):
.search(
[
("is_assortment", "=", True),
("website_availability", "=", "no_show"),
"|",
("website_ids", "=", False),
("website_ids", "=", website_id),
]
)
)
no_restriction_assortments = any(
assortment.website_availability == "no_show" for assortment in assortments
)
assortment_restriction = False
allowed_product_ids = set()
if not no_restriction_assortments:
return allowed_product_ids, assortment_restriction
for assortment in assortments:
if (
# Set active_test to False to allow filtering by partners
Expand Down
15 changes: 10 additions & 5 deletions website_sale_product_assortment/models/product_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,24 @@ def get_product_assortment_restriction_info(self, product_ids):
.search(
[
("is_assortment", "=", True),
("website_availability", "in", ["no_purchase", "no_show"]),
"|",
("website_ids", "=", website.id),
("website_ids", "=", False),
]
)
)
assortment_dict = {}
partner_assortments = self.env["ir.filters"].sudo()
allowed_product_ids = set()
for assortment in assortments:
if partner & assortment.with_context(active_test=False).all_partner_ids:
allowed_product_ids = assortment.all_product_ids.ids
for product in product_ids:
if product not in allowed_product_ids:
if assortment.website_availability != "no_restriction":
partner_assortments |= assortment
allowed_product_ids.update(assortment.all_product_ids.ids)
assortment_dict = {}
for product in product_ids:
if product not in allowed_product_ids:
for assortment in partner_assortments:
if product not in assortment.all_product_ids.ids:
assortment_dict.setdefault(product, self.env["ir.filters"])
assortment_dict[product] |= assortment
return assortment_dict
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/* Copyright 2021 Tecnativa - Carlos Roca
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */
odoo.define(
"website_sale_product_assortment.no_restriction_no_show_tour",
function (require) {
"use strict";

var tour = require("web_tour.tour");

var steps = [
{
trigger: "a:contains('Test Product 1')",
},
{
trigger: "a#add_to_cart",
},
{
trigger: "a[href='/shop/cart']",
extra_trigger: "sup.my_cart_quantity:contains('1')",
},
{
content: "go back to the store",
trigger: "a[href='/shop']",
},
{
trigger: "a:contains('Test Product 2')",
},
{
trigger: "a#add_to_cart",
},
{
trigger: "a[href='/shop/cart']",
extra_trigger: "sup.my_cart_quantity:contains('1')",
},
];

tour.register(
"test_assortment_with_no_restriction_no_show",
{
url: "/shop",
test: true,
},
steps
);
return {
steps: steps,
};
}
);
36 changes: 36 additions & 0 deletions website_sale_product_assortment/tests/test_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ def setUp(self):
"type": "consu",
}
)
self.product2 = self.env["product.template"].create(
{
"name": "Test Product 2",
"is_published": True,
"website_sequence": 2,
"type": "consu",
}
)

def test_01_ui_no_restriction(self):
self.env["ir.filters"].create(
Expand All @@ -26,6 +34,7 @@ def test_01_ui_no_restriction(self):
"domain": [("id", "!=", self.product.product_variant_id.id)],
"partner_domain": "[('id', '=', %s)]"
% self.env.ref("base.partner_admin").id,
"website_availability": "no_restriction",
}
)
self.start_tour("/shop", "test_assortment_with_no_restriction", login="admin")
Expand Down Expand Up @@ -62,3 +71,30 @@ def test_03_ui_no_purchase(self):
}
)
self.start_tour("/shop", "test_assortment_with_no_purchase", login="admin")

def test_04_ui_no_restriction_no_show(self):
self.env["ir.filters"].create(
{
"name": "Test Assortment",
"model_id": "product.product",
"is_assortment": True,
"domain": [("id", "!=", self.product.product_variant_id.id)],
"partner_domain": "[('id', '=', %s)]"
% self.env.ref("base.partner_admin").id,
"website_availability": "no_show",
}
)
self.env["ir.filters"].create(
{
"name": "Test Assortment 2",
"model_id": "product.product",
"is_assortment": True,
"domain": [("id", "!=", self.product2.product_variant_id.id)],
"partner_domain": "[('id', '=', %s)]"
% self.env.ref("base.partner_admin").id,
"website_availability": "no_restriction",
}
)
self.start_tour(
"/shop", "test_assortment_with_no_restriction_no_show", login="admin"
)

0 comments on commit bcc8b92

Please sign in to comment.