fix: Hide Attribute filters if 'Hide Variants' is enabled in E Commerce Settings

- Hide Attribute filters if 'Hide Variants' is enabled in E Commerce Settings
- Consider 'Hide Variants' in ProductQuery Engine
- Added docstrings
- Remove `get_e_commerce_settings`, redundant
This commit is contained in:
marination
2021-02-19 15:56:52 +05:30
parent b38339c979
commit f1ce418bdc
6 changed files with 71 additions and 71 deletions

View File

@@ -1,8 +1,6 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe
@@ -16,6 +14,8 @@ class ProductFiltersBuilder:
self.item_group = item_group
def get_field_filters(self):
if not self.doc.enable_field_filters: return
filter_fields = [row.fieldname for row in self.doc.filter_fields]
meta = frappe.get_meta('Item')
@@ -56,6 +56,8 @@ class ProductFiltersBuilder:
return filter_data
def get_attribute_filters(self):
if not self.doc.enable_attribute_filters: return
attributes = [row.attribute for row in self.doc.filter_attributes]
if not attributes:

View File

@@ -42,6 +42,9 @@ class ProductQuery:
if fields: self.build_fields_filters(fields)
if search_term: self.build_search_filters(search_term)
if self.settings.hide_variants:
self.conditions += " and wi.variant_of is null"
result = []
website_item_groups = []
@@ -53,7 +56,6 @@ class ProductQuery:
filters=[["Website Item Group", "item_group", "=", item_group]]
)
self.query_fields = (", ").join(self.fields)
if attributes:
result = self.query_items_with_attributes(attributes, start)
else:
@@ -70,6 +72,8 @@ class ProductQuery:
def query_items(self, conditions, or_conditions, substitutions, start=0):
"""Build a query to fetch Website Items based on field filters."""
self.query_fields = (", ").join(self.fields)
return frappe.db.sql("""
select distinct {query_fields}
from