fix: Avoid automatic customer creation on website user login

This commit is contained in:
marination 2021-10-11 23:14:28 +05:30
parent 401e22fb8d
commit d824a90fac

View File

@ -1,8 +1,5 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt # License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe import frappe
from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings import ( from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings import (
@ -18,10 +15,17 @@ def show_cart_count():
return False return False
def set_cart_count(login_manager): def set_cart_count(login_manager):
role, parties = check_customer_or_supplier() # since this is run only on hooks login event
if role == 'Supplier': return # 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(): if show_cart_count():
from erpnext.shopping_cart.cart import set_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() set_cart_count()
def clear_cart_count(login_manager): def clear_cart_count(login_manager):
@ -32,13 +36,13 @@ def update_website_context(context):
cart_enabled = is_cart_enabled() cart_enabled = is_cart_enabled()
context["shopping_cart_enabled"] = cart_enabled context["shopping_cart_enabled"] = cart_enabled
def check_customer_or_supplier(): def is_customer():
if frappe.session.user: if frappe.session.user and frappe.session.user != "Guest":
contact_name = frappe.get_value("Contact", {"email_id": frappe.session.user}) contact_name = frappe.get_value("Contact", {"email_id": frappe.session.user})
if contact_name: if contact_name:
contact = frappe.get_doc('Contact', contact_name) contact = frappe.get_doc('Contact', contact_name)
for link in contact.links: for link in contact.links:
if link.link_doctype in ('Customer', 'Supplier'): if link.link_doctype == 'Customer':
return link.link_doctype, link.link_name return True
return 'Customer', None return False