diff --git a/frappe/__version__.py b/frappe/__version__.py index a8ff913062..2522482b84 100644 --- a/frappe/__version__.py +++ b/frappe/__version__.py @@ -1,2 +1,2 @@ from __future__ import unicode_literals -__version__ = "5.0.27" +__version__ = "5.0.28" 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) + 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 comm.name + 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/hooks.py b/frappe/hooks.py index 26dfcd7140..1698f32861 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -4,7 +4,7 @@ app_title = "Frappe Framework" app_publisher = "Frappe Technologies Pvt. Ltd." app_description = "Full Stack Web Application Framework in Python" app_icon = "octicon octicon-circuit-board" -app_version = "5.0.27" +app_version = "5.0.28" app_color = "orange" app_email = "support@frappe.io" diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index ddb10f0e5f..1b1116e55b 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -524,7 +524,7 @@ class BaseDocument(object): def cast(self, val, df): if df.fieldtype in ("Currency", "Float", "Percent"): - val = flt(val, self.precision(df.fieldname)) + val = flt(val) elif df.fieldtype in ("Int", "Check"): val = cint(val) diff --git a/frappe/public/js/frappe/form/layout.js b/frappe/public/js/frappe/form/layout.js index 522472756a..10c8bd7c57 100644 --- a/frappe/public/js/frappe/form/layout.js +++ b/frappe/public/js/frappe/form/layout.js @@ -37,19 +37,8 @@ frappe.ui.form.Layout = Class.extend({ this.wrapper.find(".empty-form-alert").remove(); } - for(var i=0, l=this.fields_list.length; i