fix: generate lead_name and some other validations

This commit is contained in:
Shariq Ansari 2023-07-25 19:40:10 +05:30
parent 6f631d9e07
commit e9762935f7

View File

@ -1,9 +1,46 @@
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
# import frappe
import frappe
from frappe import _
from frappe.model.document import Document
from frappe.utils import has_gravatar, validate_email_address
class CRMLead(Document):
pass
def validate(self):
self.set_full_name()
self.set_lead_name()
self.set_title()
self.validate_email()
def set_full_name(self):
if self.first_name:
self.lead_name = " ".join(
filter(None, [self.salutation, self.first_name, self.middle_name, self.last_name])
)
def set_lead_name(self):
if not self.lead_name:
# Check for leads being created through data import
if not self.organization_name and not self.email and not self.flags.ignore_mandatory:
frappe.throw(_("A Lead requires either a person's name or an organization's name"))
elif self.organization_name:
self.lead_name = self.organization_name
else:
self.lead_name = self.email.split("@")[0]
def set_title(self):
self.title = self.organization_name or self.lead_name
def validate_email(self):
if self.email:
if not self.flags.ignore_email_validation:
validate_email_address(self.email, throw=True)
if self.email == self.lead_owner:
frappe.throw(_("Lead Owner cannot be same as the Lead Email Address"))
if self.is_new() or not self.image:
self.image = has_gravatar(self.email)