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 a6e21b5..2de47aa 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
@@ -3,7 +3,8 @@
 # For license information, please see license.txt
 
 import frappe
-from frappe import _
+from frappe.utils import cint
+from frappe import _, msgprint
 from frappe.model.document import Document
 from frappe.utils import cint
 from frappe.utils import get_datetime, get_datetime_str, now_datetime
@@ -29,7 +30,8 @@
 		frappe.clear_document_cache("E Commerce Settings", "E Commerce Settings")
 
 	def validate_field_filters(self):
-		if not (self.enable_field_filters and self.filter_fields): return
+		if not (self.enable_field_filters and self.filter_fields):
+			return
 
 		item_meta = frappe.get_meta("Item")
 		valid_fields = [df.fieldname for df in item_meta.fields if df.fieldtype in ["Link", "Table MultiSelect"]]
@@ -39,7 +41,8 @@
 				frappe.throw(_("Filter Fields Row #{0}: Fieldname <b>{1}</b> must be of type 'Link' or 'Table MultiSelect'").format(f.idx, f.fieldname))
 
 	def validate_attribute_filters(self):
-		if not (self.enable_attribute_filters and self.filter_attributes): return
+		if not (self.enable_attribute_filters and self.filter_attributes):
+			return
 
 		# if attribute filters are enabled, hide_variants should be disabled
 		self.hide_variants = 0
diff --git a/erpnext/e_commerce/doctype/item_review/item_review.py b/erpnext/e_commerce/doctype/item_review/item_review.py
index 84a1274..637194e 100644
--- a/erpnext/e_commerce/doctype/item_review/item_review.py
+++ b/erpnext/e_commerce/doctype/item_review/item_review.py
@@ -4,9 +4,6 @@
 
 from __future__ import unicode_literals
 from datetime import datetime
-from six import string_types
-import json
-
 import frappe
 from frappe.model.document import Document
 from frappe.contacts.doctype.contact.contact import get_contact_name
diff --git a/erpnext/e_commerce/doctype/website_item/website_item.py b/erpnext/e_commerce/doctype/website_item/website_item.py
index a7c56cf..3cff8ec 100644
--- a/erpnext/e_commerce/doctype/website_item/website_item.py
+++ b/erpnext/e_commerce/doctype/website_item/website_item.py
@@ -48,6 +48,7 @@
 		self.update_template_item()
 
 	def on_trash(self):
+		super(WebsiteItem, self).on_trash()
 		self.publish_unpublish_desk_item(publish=False)
 
 	def validate_duplicate_website_item(self):
@@ -169,8 +170,8 @@
 
 		context.parents = get_parent_item_groups(self.item_group, from_item=True)
 		self.attributes = frappe.get_all("Item Variant Attribute",
-					  fields=["attribute", "attribute_value"],
-					  filters={"parent": self.item_code})
+			fields=["attribute", "attribute_value"],
+			filters={"parent": self.item_code})
 		self.set_variant_context(context)
 		self.set_attribute_context(context)
 		self.set_disabled_attributes(context)
@@ -181,7 +182,7 @@
 
 		context.wished = False
 		if frappe.db.exists("Wishlist Items", {"item_code": self.item_code, "parent": frappe.session.user}):
-				context.wished = True
+			context.wished = True
 
 		return context
 
@@ -192,8 +193,8 @@
 			# load variants
 			# also used in set_attribute_context
 			context.variants = frappe.get_all("Item",
-				 filters={"variant_of": self.name, "show_variant_in_website": 1},
-				 order_by="name asc")
+				filters={"variant_of": self.name, "show_variant_in_website": 1},
+				order_by="name asc")
 
 			variant = frappe.form_dict.variant
 			if not variant and context.variants:
@@ -227,8 +228,8 @@
 			# load attributes
 			for v in context.variants:
 				v.attributes = frappe.get_all("Item Variant Attribute",
-					  fields=["attribute", "attribute_value"],
-					  filters={"parent": v.name})
+					fields=["attribute", "attribute_value"],
+					filters={"parent": v.name})
 				# make a map for easier access in templates
 				v.attribute_map = frappe._dict({})
 				for attr in v.attributes:
@@ -379,7 +380,8 @@
 
 @frappe.whitelist()
 def make_website_item(doc, save=True):
-	if not doc: return
+	if not doc:
+		return
 
 	if isinstance(doc, string_types):
 		doc = json.loads(doc)
diff --git a/erpnext/e_commerce/doctype/wishlist/wishlist.py b/erpnext/e_commerce/doctype/wishlist/wishlist.py
index eb86dc8..c817657 100644
--- a/erpnext/e_commerce/doctype/wishlist/wishlist.py
+++ b/erpnext/e_commerce/doctype/wishlist/wishlist.py
@@ -53,7 +53,7 @@
 			delete
 			from `tabWishlist Items`
 			where item_code=%(item_code)s
-		"""%{"item_code": frappe.db.escape(item_code)})
+		""" % {"item_code": frappe.db.escape(item_code)})
 
 		frappe.db.commit()
 
diff --git a/erpnext/e_commerce/filters.py b/erpnext/e_commerce/filters.py
index 3d28d90..3ca3d26 100644
--- a/erpnext/e_commerce/filters.py
+++ b/erpnext/e_commerce/filters.py
@@ -14,7 +14,8 @@
 		self.item_group = item_group
 
 	def get_field_filters(self):
-		if not self.item_group and not self.doc.enable_field_filters: return
+		if not self.item_group and not self.doc.enable_field_filters:
+			return
 
 		filter_fields = [row.fieldname for row in self.doc.filter_fields]
 
@@ -48,7 +49,8 @@
 				values = [d.name for d in frappe.get_all(doctype, filters)]
 
 			# Remove None
-			if None in values: values.remove(None)
+			if None in values:
+				values.remove(None)
 
 			if values:
 				filter_data.append([df, values])
@@ -56,7 +58,8 @@
 		return filter_data
 
 	def get_attribute_filters(self):
-		if not self.item_group and not self.doc.enable_attribute_filters: return
+		if not self.item_group and not self.doc.enable_attribute_filters:
+			return
 
 		attributes = [row.attribute for row in self.doc.filter_attributes]
 
diff --git a/erpnext/e_commerce/product_configurator/test_product_configurator.py b/erpnext/e_commerce/product_configurator/test_product_configurator.py
index 82abee3..abc1f30 100644
--- a/erpnext/e_commerce/product_configurator/test_product_configurator.py
+++ b/erpnext/e_commerce/product_configurator/test_product_configurator.py
@@ -106,7 +106,7 @@
 
 	def publish_items_on_website(self):
 		if frappe.db.exists("Item",  "_Test Item") and not frappe.db.exists("Website Item",  {"item_code": "_Test Item"}):
-				make_website_item(frappe.get_cached_doc("Item",  "_Test Item"))
+			make_website_item(frappe.get_cached_doc("Item",  "_Test Item"))
 
 		if frappe.db.exists("Item",  "_Test Variant Item") and not frappe.db.exists("Website Item",  {"item_code": "_Test Variant Item"}):
 			make_website_item(frappe.get_cached_doc("Item",  "_Test Variant Item"))
diff --git a/erpnext/e_commerce/product_configurator/utils.py b/erpnext/e_commerce/product_configurator/utils.py
index 7ccb053..9faaa5d 100644
--- a/erpnext/e_commerce/product_configurator/utils.py
+++ b/erpnext/e_commerce/product_configurator/utils.py
@@ -12,7 +12,8 @@
 		if not isinstance(attribute_values, list):
 			attribute_values = [attribute_values]
 
-		if not attribute_values: continue
+		if not attribute_values:
+			continue
 
 		wheres = []
 		query_values = []
diff --git a/erpnext/e_commerce/product_query.py b/erpnext/e_commerce/product_query.py
index 37e91a0..de3b0ee 100644
--- a/erpnext/e_commerce/product_query.py
+++ b/erpnext/e_commerce/product_query.py
@@ -10,11 +10,11 @@
 	"""Query engine for product listing
 
 	Attributes:
-	    fields (list): Fields to fetch in query
-	    conditions (string): Conditions for query building
-	    or_conditions (string): Search conditions
-	    page_length (Int): Length of page for the query
-	    settings (Document): E Commerce Settings DocType
+		fields (list): Fields to fetch in query
+		conditions (string): Conditions for query building
+		or_conditions (string): Search conditions
+		page_length (Int): Length of page for the query
+		settings (Document): E Commerce Settings DocType
 	"""
 
 	def __init__(self):
@@ -31,16 +31,18 @@
 		"""Summary
 
 		Args:
-		    attributes (dict, optional): Item Attribute filters
-		    fields (dict, optional): Field level filters
-		    search_term (str, optional): Search term to lookup
-		    start (int, optional): Page start
+			attributes (dict, optional): Item Attribute filters
+			fields (dict, optional): Field level filters
+			search_term (str, optional): Search term to lookup
+			start (int, optional): Page start
 
 		Returns:
-		    list: List of results with set fields
+			list: List of results with set fields
 		"""
-		if fields: self.build_fields_filters(fields)
-		if search_term: self.build_search_filters(search_term)
+		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"
@@ -72,13 +74,13 @@
 			if self.settings.show_stock_availability:
 				if item.get("website_warehouse"):
 					stock_qty = frappe.utils.flt(
-							frappe.db.get_value("Bin",
-								{
-									"item_code": item.item_code,
-									"warehouse": item.get("website_warehouse")
-								},
-								"actual_qty")
-							)
+						frappe.db.get_value("Bin",
+							{
+								"item_code": item.item_code,
+								"warehouse": item.get("website_warehouse")
+							},
+							"actual_qty")
+					)
 					item.in_stock = "green" if stock_qty else "red"
 				elif not frappe.db.get_value("Item", item.item_code, "is_stock_item"):
 					item.in_stock = "green" # non-stock item will always be available
@@ -117,7 +119,8 @@
 		self.conditions += " and iva.parent = wi.item_code"
 
 		for attribute, values in attributes.items():
-			if not isinstance(values, list): values = [values]
+			if not isinstance(values, list):
+				values = [values]
 
 			conditions_copy = self.conditions
 			substitutions_copy = self.substitutions.copy()
@@ -140,7 +143,7 @@
 		"""Build filters for field values
 
 		Args:
-		    filters (dict): Filters
+			filters (dict): Filters
 		"""
 		for field, values in filters.items():
 			if not values:
@@ -167,7 +170,7 @@
 		"""Query search term in specified fields
 
 		Args:
-		    search_term (str): Search candidate
+			search_term (str): Search candidate
 		"""
 		# Default fields to search from
 		default_fields = {'name', 'item_name', 'description', 'item_group'}
diff --git a/erpnext/patches/v13_0/make_homepage_products_website_items.py b/erpnext/patches/v13_0/make_homepage_products_website_items.py
index 67cccdf..8b51cad 100644
--- a/erpnext/patches/v13_0/make_homepage_products_website_items.py
+++ b/erpnext/patches/v13_0/make_homepage_products_website_items.py
@@ -6,7 +6,8 @@
 
 	for row in homepage.products:
 		web_item = frappe.db.get_value("Website Item", {"item_code": row.item_code}, "name")
-		if not web_item: continue
+		if not web_item:
+			continue
 
 		row.item_code = web_item
 
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index b0371c5..0e9e631 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -380,7 +380,6 @@
 		)
 
 	def on_trash(self):
-		super(Item, self).on_trash()
 		frappe.db.sql("""delete from tabBin where item_code=%s""", self.name)
 		frappe.db.sql("delete from `tabItem Price` where item_code=%s", self.name)
 		for variant_of in frappe.get_all("Item", filters={"variant_of": self.name}):
diff --git a/erpnext/templates/pages/customer_reviews.js b/erpnext/templates/pages/customer_reviews.js
index 453b96a..9be12c7 100644
--- a/erpnext/templates/pages/customer_reviews.js
+++ b/erpnext/templates/pages/customer_reviews.js
@@ -26,7 +26,6 @@
 						{fieldname: "comment", fieldtype: "Small Text", label: "Your Review"}
 					],
 					primary_action: function() {
-						let me = this;
 						let data = d.get_values();
 						frappe.call({
 							method: "erpnext.e_commerce.doctype.item_review.item_review.add_item_review",
@@ -39,7 +38,7 @@
 							freeze: true,
 							freeze_message: __("Submitting Review ..."),
 							callback: (r) => {
-								if(!r.exc) {
+								if (!r.exc) {
 									frappe.msgprint({
 										message: __("Thank you for submitting your review"),
 										title: __("Review Submitted"),
@@ -74,7 +73,7 @@
 						end: me.page_length
 					},
 					callback: (result) => {
-						if(result.message) {
+						if (result.message) {
 							let res = result.message;
 							me.get_user_review_html(res.reviews);
 
@@ -85,7 +84,7 @@
 
 						}
 					}
-				})
+				});
 			});
 
 		}
@@ -121,7 +120,7 @@
 
 		get_review_stars(rating) {
 			let stars = ``;
-			for(let i = 1; i < 6; i++) {
+			for (let i = 1; i < 6; i++) {
 				let fill_class = i <= rating ? 'star-click' : '';
 				stars += `<svg class="icon icon-md ${fill_class}">
 						<use href="#icon-star"></use>
diff --git a/erpnext/templates/pages/wishlist.py b/erpnext/templates/pages/wishlist.py
index 0dbcf21..96c83da 100644
--- a/erpnext/templates/pages/wishlist.py
+++ b/erpnext/templates/pages/wishlist.py
@@ -19,7 +19,7 @@
 						"warehouse": item.get("warehouse")
 					},
 					"actual_qty")
-				)
+			)
 			item.available = True if stock_qty else False
 
 	context.items = items
@@ -34,5 +34,5 @@
 			from
 				`tabWishlist Items`
 			where
-				parent=%(user)s"""%{"user": frappe.db.escape(frappe.session.user)}, as_dict=1)
+				parent=%(user)s""" % {"user": frappe.db.escape(frappe.session.user)}, as_dict=1)
 	return
\ No newline at end of file
