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 8d6cc74..ec989a6 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
@@ -132,12 +132,14 @@
 
 	def on_change(self):
 		old_doc = self.get_doc_before_save()
-		old_fields = old_doc.search_index_fields
-		new_fields = self.search_index_fields
 
-		# if search index fields get changed
-		if not (new_fields == old_fields):
-			create_website_items_index()
+		if old_doc:
+			old_fields = old_doc.search_index_fields
+			new_fields = self.search_index_fields
+
+			# if search index fields get changed
+			if not (new_fields == old_fields):
+				create_website_items_index()
 
 def validate_cart_settings(doc, method):
 	frappe.get_doc("E Commerce Settings", "E Commerce Settings").run_method("validate")
diff --git a/erpnext/e_commerce/product_search.js b/erpnext/e_commerce/product_search.js
index 4f8b028..605594b 100644
--- a/erpnext/e_commerce/product_search.js
+++ b/erpnext/e_commerce/product_search.js
@@ -18,11 +18,11 @@
 	bindSearchAction() {
 		let me = this;
 
-		this.searchBox.on("focus", (e) => {
+		this.searchBox.on("focus", () => {
 			this.search_dropdown.removeClass("hidden");
 		});
 
-		this.searchBox.on("focusout", (e) => {
+		this.searchBox.on("focusout", () => {
 			this.search_dropdown.addClass("hidden");
 		});
 
@@ -53,7 +53,7 @@
 						query: query
 					},
 					callback: (data) => {
-						me.populateCategoriesList(data)
+						me.populateCategoriesList(data);
 					}
 				});
 			}
@@ -211,16 +211,16 @@
 			return;
 		}
 
-		let html = ""
-		let search_results = data.message.results
+		let html = "";
+		let search_results = data.message.results;
 		search_results.forEach((category) => {
 			html += `
 				<div class="mb-2" style="font-weight: 400;">
 					<a href="/${category.route}">${category.name}</a>
 				</div>
 			`;
-		})
+		});
 
 		this.category_container.html(html);
 	}
-}
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/erpnext/e_commerce/website_item_indexing.py b/erpnext/e_commerce/website_item_indexing.py
index 3270101..73ab740 100644
--- a/erpnext/e_commerce/website_item_indexing.py
+++ b/erpnext/e_commerce/website_item_indexing.py
@@ -120,7 +120,7 @@
 
 	try:
 		cache.delete(key)
-	except:
+	except Exception:
 		return False
 
 	delete_from_ac_dict(website_item_doc)
@@ -152,7 +152,7 @@
 	try:
 		cache.delete(make_key(WEBSITE_ITEM_NAME_AUTOCOMPLETE))
 		cache.delete(make_key(WEBSITE_ITEM_CATEGORY_AUTOCOMPLETE))
-	except:
+	except Exception:
 		return False
 
 	items = frappe.get_all(
diff --git a/erpnext/www/shop-by-category/index.py b/erpnext/www/shop-by-category/index.py
index f94b33e..865a4c0 100644
--- a/erpnext/www/shop-by-category/index.py
+++ b/erpnext/www/shop-by-category/index.py
@@ -70,13 +70,14 @@
 			if frappe.get_meta(doctype, cached=True).get_field("image"):
 				fields += ["image"]
 
-			categorical_data[category] = frappe.db.sql(f"""
-				Select
-					{",".join(fields)}
-				from
-					`tab{doctype}`""",
-				as_dict=1
-			)
+			categorical_data[category] = frappe.db.sql(
+				f"""
+					Select
+						{",".join(fields)}
+					from
+						`tab{doctype}`
+				""",
+				as_dict=1)
 
 	return categorical_data
 
