From 34437a83df710e77090a21115fcea9c88fea5bc8 Mon Sep 17 00:00:00 2001 From: marination Date: Mon, 18 Apr 2022 18:50:58 +0530 Subject: [PATCH] fix: Validate field filter wrt to Website Item & re-use validation in Item Group --- .../e_commerce_settings.py | 19 ++++++++++--------- .../setup/doctype/item_group/item_group.py | 2 ++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py b/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py index a0003436efc3..bd7ac9cdb7aa 100644 --- a/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py +++ b/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py @@ -26,7 +26,7 @@ def onload(self): self.is_redisearch_loaded = is_search_module_loaded() def validate(self): - self.validate_field_filters() + self.validate_field_filters(self.filter_fields, self.enable_field_filters) self.validate_attribute_filters() self.validate_checkout() self.validate_search_index_fields() @@ -50,21 +50,22 @@ def create_redisearch_indexes(self): define_autocomplete_dictionary() create_website_items_index() - def validate_field_filters(self): - if not (self.enable_field_filters and self.filter_fields): + @staticmethod + def validate_field_filters(filter_fields, enable_field_filters): + if not (enable_field_filters and filter_fields): return - item_meta = frappe.get_meta("Website Item") + web_item_meta = frappe.get_meta("Website Item") valid_fields = [ - df.fieldname for df in item_meta.fields if df.fieldtype in ["Link", "Table MultiSelect"] + df.fieldname for df in web_item_meta.fields if df.fieldtype in ["Link", "Table MultiSelect"] ] - for f in self.filter_fields: - if f.fieldname not in valid_fields: + for row in filter_fields: + if row.fieldname not in valid_fields: frappe.throw( _( - "Filter Fields Row #{0}: Fieldname {1} must be of type 'Link' or 'Table MultiSelect'" - ).format(f.idx, f.fieldname) + "Filter Fields Row #{0}: Fieldname {1} must be of type 'Link' or 'Table MultiSelect'" + ).format(row.idx, frappe.bold(row.fieldname)) ) def validate_attribute_filters(self): diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py index 890b18c37a9a..769b2d880853 100644 --- a/erpnext/setup/doctype/item_group/item_group.py +++ b/erpnext/setup/doctype/item_group/item_group.py @@ -12,6 +12,7 @@ from frappe.website.website_generator import WebsiteGenerator from six.moves.urllib.parse import quote +from erpnext.e_commerce.doctype.e_commerce_settings.e_commerce_settings import ECommerceSettings from erpnext.e_commerce.product_data_engine.filters import ProductFiltersBuilder @@ -36,6 +37,7 @@ def validate(self): self.make_route() self.validate_item_group_defaults() + ECommerceSettings.validate_field_filters(self.filter_fields, enable_field_filters=True) def on_update(self): NestedSet.on_update(self)