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() 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; } }); }); diff --git a/frappe/email/doctype/email_alert/email_alert.py b/frappe/email/doctype/email_alert/email_alert.py index 26cdc4e796..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,12 +195,10 @@ 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)): - # 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 if event != "Value Change" and not doc.is_new(): @@ -212,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} 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)