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 c3a34443df2..89727bebe49 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 @@ -8,7 +8,7 @@ from frappe import _, msgprint from frappe.utils import flt, comma_and from frappe.model.document import Document from frappe.utils import unique -from erpnext.e_commerce.redisearch import create_website_items_index, ALLOWED_INDEXABLE_FIELDS_SET, is_search_module_loaded +from erpnext.e_commerce.redisearch import create_website_items_index, get_indexable_web_fields, is_search_module_loaded class ShoppingCartSetupError(frappe.ValidationError): pass @@ -58,8 +58,10 @@ class ECommerceSettings(Document): fields = unique(fields.strip(',').split(',')) # Remove extra ',' and remove duplicates # All fields should be indexable - if not (set(fields).issubset(ALLOWED_INDEXABLE_FIELDS_SET)): - invalid_fields = list(set(fields).difference(ALLOWED_INDEXABLE_FIELDS_SET)) + allowed_indexable_fields = get_indexable_web_fields() + + if not (set(fields).issubset(allowed_indexable_fields)): + invalid_fields = list(set(fields).difference(allowed_indexable_fields)) num_invalid_fields = len(invalid_fields) invalid_fields = comma_and(invalid_fields) diff --git a/erpnext/e_commerce/redisearch.py b/erpnext/e_commerce/redisearch.py index 9dac40fea2e..d0626a36827 100644 --- a/erpnext/e_commerce/redisearch.py +++ b/erpnext/e_commerce/redisearch.py @@ -19,9 +19,6 @@ def get_indexable_web_fields(): return [df.fieldname for df in valid_fields] -ALLOWED_INDEXABLE_FIELDS_SET = get_indexable_web_fields() - - def is_search_module_loaded(): cache = frappe.cache() out = cache.execute_command('MODULE LIST') diff --git a/erpnext/patches/v13_0/create_website_items.py b/erpnext/patches/v13_0/create_website_items.py index 4a70f802500..79c1418190f 100644 --- a/erpnext/patches/v13_0/create_website_items.py +++ b/erpnext/patches/v13_0/create_website_items.py @@ -15,12 +15,12 @@ def execute(): item_table_fields = frappe.db.sql("desc `tabItem`", as_dict=1) item_table_fields = [d.get('Field') for d in item_table_fields] - # prepare fields to query from Item, check if the field exists in Item master + # prepare fields to query from Item, check if the web field exists in Item master web_query_fields = [] - for field in web_fields_to_map: - if field in item_table_fields: - web_query_fields.append(field) - item_fields.append(field) + for web_field in web_fields_to_map: + if web_field in item_table_fields: + web_query_fields.append(web_field) + item_fields.append(web_field) # check if the filter fields exist in Item master or_filters = {} @@ -39,6 +39,7 @@ def execute(): or_filters=or_filters ) + count = 0 for item in items: if frappe.db.exists("Website Item", {"item_code": item.item_code}): continue @@ -62,4 +63,8 @@ def execute(): where parenttype = 'Item' and parent = '{item_code}' - """) \ No newline at end of file + """) + + count += 1 + if count % 20 == 0: # commit after every 20 items + frappe.db.commit() \ No newline at end of file