summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-02-05 11:30:42 +0100
committerChristophe Simonis <chs@odoo.com>2018-02-05 11:30:42 +0100
commite5f2e6d3908bc4bfc397ef9ef164219e5fb50acc (patch)
tree9201b190915d11e20ad4e216436a3215b71a341b /addons
parentdf1accbf539fbe4078a9816a19d1b5ee1f38e8f1 (diff)
parentb08185fc66ab83ec3d25b00beb00633517925520 (diff)
[MERGE] forward port branch 9.0 up to b08185fc66a
Diffstat (limited to 'addons')
-rw-r--r--addons/product/models/product_attribute.py7
-rw-r--r--addons/product/tests/test_variants.py37
-rw-r--r--addons/website_forum/views/website_forum.xml2
3 files changed, 41 insertions, 5 deletions
diff --git a/addons/product/models/product_attribute.py b/addons/product/models/product_attribute.py
index f4e81aa4aa2..7c96a174a6f 100644
--- a/addons/product/models/product_attribute.py
+++ b/addons/product/models/product_attribute.py
@@ -107,7 +107,6 @@ class ProductAttributeLine(models.Model):
# search on a m2o and one on a m2m, probably this will quickly become
# difficult to compute - check if performance optimization is required
if name and operator in ('=', 'ilike', '=ilike', 'like', '=like'):
- new_args = ['|', ('attribute_id', operator, name), ('value_ids', operator, name)]
- else:
- new_args = args
- return super(ProductAttributeLine, self).name_search(name=name, args=new_args, operator=operator, limit=limit)
+ args = ['|', ('attribute_id', operator, name), ('value_ids', operator, name)]
+ return self.search(args, limit=limit).name_get()
+ return super(ProductAttributeLine, self).name_search(name=name, args=args, operator=operator, limit=limit)
diff --git a/addons/product/tests/test_variants.py b/addons/product/tests/test_variants.py
index fbf3073377d..813f5f9e28d 100644
--- a/addons/product/tests/test_variants.py
+++ b/addons/product/tests/test_variants.py
@@ -2,6 +2,43 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import common
+from odoo.tests.common import TransactionCase
+
+class TestVariants(TransactionCase):
+
+ def setUp(self):
+ res = super(TestVariants, self).setUp()
+ self.size_attr = self.env['product.attribute'].create({'name': 'Size'})
+ self.size_attr_value_s = self.env['product.attribute.value'].create({'name': 'S', 'attribute_id': self.size_attr.id})
+ self.size_attr_value_m = self.env['product.attribute.value'].create({'name': 'M', 'attribute_id': self.size_attr.id})
+ self.size_attr_value_l = self.env['product.attribute.value'].create({'name': 'L', 'attribute_id': self.size_attr.id})
+ self.product_shirt_template = self.env['product.template'].create({
+ 'name': 'Shirt',
+ 'attribute_line_ids': [(0, 0, {
+ 'attribute_id': self.size_attr.id,
+ 'value_ids': [(6, 0, [self.size_attr_value_l.id])],
+ })]
+ })
+ return res
+
+ def test_attribute_line_search(self):
+ search_not_to_be_found = self.env['product.template'].search(
+ [('attribute_line_ids', '=', 'M')]
+ )
+ self.assertNotIn(self.product_shirt_template, search_not_to_be_found,
+ 'Shirt should not be found searching M')
+
+ search_attribute = self.env['product.template'].search(
+ [('attribute_line_ids', '=', 'Size')]
+ )
+ self.assertIn(self.product_shirt_template, search_attribute,
+ 'Shirt should be found searching Size')
+
+ search_value = self.env['product.template'].search(
+ [('attribute_line_ids', '=', 'L')]
+ )
+ self.assertIn(self.product_shirt_template, search_value,
+ 'Shirt should be found searching L')
class TestVariants(common.TestProductCommon):
diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml
index ddc91016519..eb0b3a06131 100644
--- a/addons/website_forum/views/website_forum.xml
+++ b/addons/website_forum/views/website_forum.xml
@@ -685,7 +685,7 @@
<!-- Edition: post a reply -->
<template id="post_reply">
- <div class="css_editable_mode_hidden" groups="base.group_user">
+ <div class="css_editable_mode_hidden">
<form t-attf-id="reply#{ object._name.replace('.','') + '-' + str(object.id) }" class="collapse js_website_submit_form"
t-attf-action="/forum/#{ slug(forum) }/#{slug(object)}/reply" method="post" role="form">
<h3 class="mt8">Your Reply</h3>