From c62e7334bc5354f9b907b26f3d0d59e51235dec2 Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Mon, 11 Nov 2024 12:19:38 +0530 Subject: [PATCH] refactor: use composite unique index in Email Account (#28417) --- frappe/email/doctype/email_account/email_account.json | 5 ++--- frappe/email/doctype/email_account/email_account.py | 8 ++++++++ frappe/email/receive.py | 4 +++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/frappe/email/doctype/email_account/email_account.json b/frappe/email/doctype/email_account/email_account.json index cca7cc7165..274f37f81d 100644 --- a/frappe/email/doctype/email_account/email_account.json +++ b/frappe/email/doctype/email_account/email_account.json @@ -95,8 +95,7 @@ "in_list_view": 1, "label": "Email Address", "options": "Email", - "reqd": 1, - "unique": 1 + "reqd": 1 }, { "default": "0", @@ -697,7 +696,7 @@ "icon": "fa fa-inbox", "index_web_pages_for_search": 1, "links": [], - "modified": "2024-07-18 11:05:57.193762", + "modified": "2024-11-11 10:12:06.667888", "modified_by": "Administrator", "module": "Email", "name": "Email Account", diff --git a/frappe/email/doctype/email_account/email_account.py b/frappe/email/doctype/email_account/email_account.py index b90c672d0e..7882f25551 100755 --- a/frappe/email/doctype/email_account/email_account.py +++ b/frappe/email/doctype/email_account/email_account.py @@ -1034,3 +1034,11 @@ def set_email_password(email_account, password): return False return True + + +def on_doctype_update() -> None: + frappe.db.add_unique( + "Email Account", + ["email_id", "enable_incoming", "enable_outgoing"], + constraint_name="unique_email_account_type", + ) diff --git a/frappe/email/receive.py b/frappe/email/receive.py index 0227f726e8..cf7bed72c6 100644 --- a/frappe/email/receive.py +++ b/frappe/email/receive.py @@ -432,7 +432,9 @@ class Email: _from_email = self.decode_email(self.mail.get("X-Original-From") or self.mail["From"]) _reply_to = self.decode_email(self.mail.get("Reply-To")) - if _reply_to and not frappe.db.get_value("Email Account", {"email_id": _reply_to}, "email_id"): + if _reply_to and not frappe.db.get_value( + "Email Account", {"email_id": _reply_to, "enable_incoming": 1}, "email_id" + ): self.from_email = extract_email_id(_reply_to) else: self.from_email = extract_email_id(_from_email)