diff --git a/frappe/core/doctype/comment/comment.py b/frappe/core/doctype/comment/comment.py index 57e688a8f6..fa2c8cb37e 100644 --- a/frappe/core/doctype/comment/comment.py +++ b/frappe/core/doctype/comment/comment.py @@ -101,7 +101,7 @@ class Comment(Document): """Updates `_comments` property in parent Document with given dict. :param _comments: Dict of comments.""" - if frappe.db.get_value("DocType", self.comment_doctype, "issingle"): + if not self.comment_doctype or frappe.db.get_value("DocType", self.comment_doctype, "issingle"): return # use sql, so that we do not mess with the timestamp diff --git a/frappe/core/doctype/communication/communication.py b/frappe/core/doctype/communication/communication.py index 8163163c18..5fbf556568 100644 --- a/frappe/core/doctype/communication/communication.py +++ b/frappe/core/doctype/communication/communication.py @@ -44,14 +44,14 @@ class Communication(Document): frappe.db.set_value(parent.doctype, parent.name, "status", to_status) def send(self, print_html=None, print_format=None, attachments=None, - send_me_a_copy=False): + send_me_a_copy=False, recipients=None): """Send communication via Email. :param print_html: Send given value as HTML attachment. :param print_format: Attach print format of parent document.""" self.send_me_a_copy = send_me_a_copy - self.notify(print_html, print_format, attachments) + self.notify(print_html, print_format, attachments, recipients) def set_incoming_outgoing_accounts(self): self.incoming_email_account = self.outgoing_email_account = None @@ -71,9 +71,10 @@ class Communication(Document): self.outgoing_email_account = frappe.db.get_value("Email Account", {"default_outgoing": 1}, ["email_id", "always_use_account_email_id_as_sender"], as_dict=True) or frappe._dict() - def notify(self, print_html=None, print_format=None, attachments=None, except_recipient=False): + def notify(self, print_html=None, print_format=None, attachments=None, recipients=None, except_recipient=False): self.prepare_to_notify(print_html, print_format, attachments) - recipients = self.get_recipients(except_recipient=except_recipient) + if not recipients: + recipients = self.get_recipients(except_recipient=except_recipient) frappe.sendmail( recipients=recipients, @@ -246,11 +247,17 @@ def make(doctype=None, name=None, content=None, subject=None, sent_or_received = "reference_name": name }) comm.insert(ignore_permissions=True) - + + recipients = None if send_email: - comm.send(print_html, print_format, attachments, send_me_a_copy=send_me_a_copy) - - return comm.name + comm.send_me_a_copy = send_me_a_copy + recipients = comm.get_recipients() + comm.send(print_html, print_format, attachments, send_me_a_copy=send_me_a_copy, recipients=recipients) + + return { + "name": comm.name, + "recipients": ", ".join(recipients) if recipients else None + } @frappe.whitelist() def get_convert_to(): diff --git a/frappe/email/doctype/email_account/test_email_account.py b/frappe/email/doctype/email_account/test_email_account.py index f09ae9a0bd..c8c8839e19 100644 --- a/frappe/email/doctype/email_account/test_email_account.py +++ b/frappe/email/doctype/email_account/test_email_account.py @@ -90,7 +90,7 @@ class TestEmailAccount(unittest.TestCase): # send sent_name = make(subject = "Test", content="test content", recipients="test_receiver@example.com", sender="test@example.com", - send_email=True) + send_email=True)["name"] sent_mail = email.message_from_string(frappe.get_last_doc("Bulk Email").message) with open(os.path.join(os.path.dirname(__file__), "test_mails", "reply-1.raw"), "r") as f: diff --git a/frappe/public/js/frappe/views/communication.js b/frappe/public/js/frappe/views/communication.js index 1beb94539e..8b2924abee 100644 --- a/frappe/public/js/frappe/views/communication.js +++ b/frappe/public/js/frappe/views/communication.js @@ -328,7 +328,7 @@ frappe.views.CommunicationComposer = Class.extend({ callback: function(r) { if(!r.exc) { if(form_values.send_email) - msgprint(__("Email sent to {0}", [form_values.recipients])); + msgprint(__("Email sent to {0}", [r.message["recipients"]])); me.dialog.hide(); if (cur_frm) {