From 87086fe906be128f3107cc462b7c1a1e65549a3d Mon Sep 17 00:00:00 2001 From: mbauskar Date: Sat, 29 Apr 2017 17:19:12 +0530 Subject: [PATCH 1/5] [minor] type casting value to string causes email alerts to be sent on every save action --- frappe/email/doctype/email_alert/email_alert.py | 4 ---- frappe/email/doctype/email_alert/test_email_alert.py | 6 ++++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/frappe/email/doctype/email_alert/email_alert.py b/frappe/email/doctype/email_alert/email_alert.py index 26cdc4e796..ce3fb3ec36 100755 --- a/frappe/email/doctype/email_alert/email_alert.py +++ b/frappe/email/doctype/email_alert/email_alert.py @@ -195,10 +195,6 @@ def evaluate_alert(doc, alert, event): if event=="Value Change" and not doc.is_new(): db_value = frappe.db.get_value(doc.doctype, doc.name, alert.value_changed) - # cast to string if not already for comparing to doc.get's value - if not isinstance(db_value, basestring): - db_value = str(frappe.db.get_value(doc.doctype, doc.name, alert.value_changed)) - if doc.get(alert.value_changed) == db_value: return # value not changed diff --git a/frappe/email/doctype/email_alert/test_email_alert.py b/frappe/email/doctype/email_alert/test_email_alert.py index 3489c20048..57686dd984 100755 --- a/frappe/email/doctype/email_alert/test_email_alert.py +++ b/frappe/email/doctype/email_alert/test_email_alert.py @@ -78,7 +78,7 @@ class TestEmailAlert(unittest.TestCase): event.subject = "test 1" event.save() - self.assertTrue(frappe.db.get_value("Email Queue", {"reference_doctype": "Event", + self.assertFalse(frappe.db.get_value("Email Queue", {"reference_doctype": "Event", "reference_name": event.name, "status":"Not Sent"})) event.description = "test" @@ -106,7 +106,9 @@ class TestEmailAlert(unittest.TestCase): event.starts_on = frappe.utils.add_days(frappe.utils.nowdate(), 2) + " 12:00:00" event.save() - self.assertTrue(frappe.db.get_value("Email Queue", {"reference_doctype": "Event", + # Value Change email alert alert will be trigger as description is not changed + # mail will not be sent + self.assertFalse(frappe.db.get_value("Email Queue", {"reference_doctype": "Event", "reference_name": event.name, "status":"Not Sent"})) frappe.utils.scheduler.trigger(frappe.local.site, "daily", now=True) From 70cd059375d00ca8871d937b4658f2b68e609313 Mon Sep 17 00:00:00 2001 From: mbauskar Date: Sat, 29 Apr 2017 21:13:08 +0530 Subject: [PATCH 2/5] [fixes] ignore the email trigger if the db_value is 0 and form value is None --- frappe/email/doctype/email_alert/email_alert.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/email/doctype/email_alert/email_alert.py b/frappe/email/doctype/email_alert/email_alert.py index ce3fb3ec36..8568579a7c 100755 --- a/frappe/email/doctype/email_alert/email_alert.py +++ b/frappe/email/doctype/email_alert/email_alert.py @@ -195,7 +195,9 @@ def evaluate_alert(doc, alert, event): if event=="Value Change" and not doc.is_new(): db_value = frappe.db.get_value(doc.doctype, doc.name, alert.value_changed) - if doc.get(alert.value_changed) == db_value: + if (doc.get(alert.value_changed) == db_value) or \ + (not db_value and not doc.get(alert.value_changed)): + return # value not changed if event != "Value Change" and not doc.is_new(): From 25b032518d1243101f5ba0219e25d42b38a8db50 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Sun, 30 Apr 2017 08:49:54 +0530 Subject: [PATCH 3/5] Update email_alert.py --- frappe/email/doctype/email_alert/email_alert.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frappe/email/doctype/email_alert/email_alert.py b/frappe/email/doctype/email_alert/email_alert.py index 8568579a7c..d218d1cb16 100755 --- a/frappe/email/doctype/email_alert/email_alert.py +++ b/frappe/email/doctype/email_alert/email_alert.py @@ -8,6 +8,7 @@ from frappe import _ from frappe.model.document import Document from frappe.core.doctype.role.role import get_emails_from_role from frappe.utils import validate_email_add, nowdate +from frappe.utils.data import parse_val from frappe.utils.jinja import validate_template from frappe.modules.utils import export_module_json, get_doc_module from markdown2 import markdown @@ -194,7 +195,7 @@ def evaluate_alert(doc, alert, event): if event=="Value Change" and not doc.is_new(): db_value = frappe.db.get_value(doc.doctype, doc.name, alert.value_changed) - + db_value = parse_val(db_value) if (doc.get(alert.value_changed) == db_value) or \ (not db_value and not doc.get(alert.value_changed)): @@ -210,4 +211,4 @@ def evaluate_alert(doc, alert, event): frappe.throw(_("Error while evaluating Email Alert {0}. Please fix your template.").format(alert)) def get_context(doc): - return {"doc": doc, "nowdate": nowdate, "frappe.utils": frappe.utils} \ No newline at end of file + return {"doc": doc, "nowdate": nowdate, "frappe.utils": frappe.utils} From f6f96a69cfb453ab45ed55b8acc5dd9e8d00846b Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Sat, 29 Apr 2017 10:49:23 +0530 Subject: [PATCH 4/5] [fix] On the module page reports not showing of the doctype, which had option User Cannot Search --- frappe/desk/page/modules/modules.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/desk/page/modules/modules.js b/frappe/desk/page/modules/modules.js index e5d22f8d9e..62f51c9eed 100644 --- a/frappe/desk/page/modules/modules.js +++ b/frappe/desk/page/modules/modules.js @@ -133,9 +133,9 @@ frappe.pages['modules'].on_page_load = function(wrapper) { return encodeURIComponent(key) + "=" + encodeURIComponent(value) }).join('&') } - if(item.type==="page" || item.type==="help" || - (item.doctype && frappe.model.can_read(item.doctype))) { - item.shown = true; + if(item.type==="page" || item.type==="help" || item.type==="report" || + (item.doctype && frappe.model.can_read(item.doctype))) { + item.shown = true; } }); }); From cf5d41260aa44e992ab29e0ef4a9bcb87b310e9f Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Sun, 30 Apr 2017 09:32:27 +0600 Subject: [PATCH 5/5] bumped to version 8.0.31 --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 82b00e35e3..ffdfb5cb43 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template -__version__ = '8.0.30' +__version__ = '8.0.31' __title__ = "Frappe Framework" local = Local()