Merge pull request #27914 from marination/avoid-auto-customer-creation-website

fix: Avoid automatic customer creation on website user login
diff --git a/erpnext/shopping_cart/utils.py b/erpnext/shopping_cart/utils.py
index f412e61..5f0c792 100644
--- a/erpnext/shopping_cart/utils.py
+++ b/erpnext/shopping_cart/utils.py
@@ -1,8 +1,5 @@
 # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 # License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-
 import frappe
 
 from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings import (
@@ -18,10 +15,19 @@
 	return False
 
 def set_cart_count(login_manager):
-	role, parties = check_customer_or_supplier()
-	if role == 'Supplier': return
+	# since this is run only on hooks login event
+	# make sure user is already a customer
+	# before trying to set cart count
+	user_is_customer = is_customer()
+	if not user_is_customer:
+		return
+
 	if show_cart_count():
 		from erpnext.shopping_cart.cart import set_cart_count
+
+		# set_cart_count will try to fetch existing cart quotation
+		# or create one if non existent (and create a customer too)
+		# cart count is calculated from this quotation's items
 		set_cart_count()
 
 def clear_cart_count(login_manager):
@@ -32,13 +38,13 @@
 	cart_enabled = is_cart_enabled()
 	context["shopping_cart_enabled"] = cart_enabled
 
-def check_customer_or_supplier():
-	if frappe.session.user:
+def is_customer():
+	if frappe.session.user and frappe.session.user != "Guest":
 		contact_name = frappe.get_value("Contact", {"email_id": frappe.session.user})
 		if contact_name:
 			contact = frappe.get_doc('Contact', contact_name)
 			for link in contact.links:
-				if link.link_doctype in ('Customer', 'Supplier'):
-					return link.link_doctype, link.link_name
+				if link.link_doctype == 'Customer':
+					return True
 
-		return 'Customer', None
+		return False