From 6d41379fc48848d7e0694bc067fa600fba8e6efb Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 2 Apr 2015 22:56:38 +0530 Subject: [PATCH] de-duplicate email account name --- frappe/email/doctype/email_account/email_account.py | 4 +++- frappe/model/naming.py | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/frappe/email/doctype/email_account/email_account.py b/frappe/email/doctype/email_account/email_account.py index 724d5bcbcb..ce07292d31 100644 --- a/frappe/email/doctype/email_account/email_account.py +++ b/frappe/email/doctype/email_account/email_account.py @@ -11,6 +11,7 @@ from frappe.email.receive import POP3Server, Email from poplib import error_proto import markdown2 from datetime import datetime, timedelta +from frappe.model.naming import de_duplicate class EmailAccount(Document): def autoname(self): @@ -22,7 +23,8 @@ class EmailAccount(Document): if self.service: self.email_account_name = self.email_account_name + " " + self.service - self.name = self.email_account_name + # if same email address is used for different Email Account settings, append a number like account_name-1 + self.name = de_duplicate("Email Account", self.email_account_name) def validate(self): """Validate email id and check POP3 and SMTP connections is enabled.""" diff --git a/frappe/model/naming.py b/frappe/model/naming.py index a85a00c2fa..3a7a4a7cb6 100644 --- a/frappe/model/naming.py +++ b/frappe/model/naming.py @@ -186,3 +186,14 @@ def append_number_if_name_exists(doc): doc.name = "{0}-{1}".format(doc.name, count) +def de_duplicate(doctype, name): + original_name = name + count = 0 + while True: + if frappe.db.exists(doctype, name): + count += 1 + name = "{0}-{1}".format(original_name, count) + else: + break + + return name