@@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json | |||||
from .exceptions import * | from .exceptions import * | ||||
from .utils.jinja import get_jenv, get_template, render_template | from .utils.jinja import get_jenv, get_template, render_template | ||||
__version__ = '8.0.30' | |||||
__version__ = '8.0.31' | |||||
__title__ = "Frappe Framework" | __title__ = "Frappe Framework" | ||||
local = Local() | local = Local() | ||||
@@ -133,9 +133,9 @@ frappe.pages['modules'].on_page_load = function(wrapper) { | |||||
return encodeURIComponent(key) + "=" + encodeURIComponent(value) }).join('&') | 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; | |||||
} | } | ||||
}); | }); | ||||
}); | }); | ||||
@@ -8,6 +8,7 @@ from frappe import _ | |||||
from frappe.model.document import Document | from frappe.model.document import Document | ||||
from frappe.core.doctype.role.role import get_emails_from_role | from frappe.core.doctype.role.role import get_emails_from_role | ||||
from frappe.utils import validate_email_add, nowdate | from frappe.utils import validate_email_add, nowdate | ||||
from frappe.utils.data import parse_val | |||||
from frappe.utils.jinja import validate_template | from frappe.utils.jinja import validate_template | ||||
from frappe.modules.utils import export_module_json, get_doc_module | from frappe.modules.utils import export_module_json, get_doc_module | ||||
from markdown2 import markdown | from markdown2 import markdown | ||||
@@ -194,12 +195,10 @@ def evaluate_alert(doc, alert, event): | |||||
if event=="Value Change" and not doc.is_new(): | if event=="Value Change" and not doc.is_new(): | ||||
db_value = frappe.db.get_value(doc.doctype, doc.name, alert.value_changed) | 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 | return # value not changed | ||||
if event != "Value Change" and not doc.is_new(): | 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)) | frappe.throw(_("Error while evaluating Email Alert {0}. Please fix your template.").format(alert)) | ||||
def get_context(doc): | def get_context(doc): | ||||
return {"doc": doc, "nowdate": nowdate, "frappe.utils": frappe.utils} | |||||
return {"doc": doc, "nowdate": nowdate, "frappe.utils": frappe.utils} |
@@ -78,7 +78,7 @@ class TestEmailAlert(unittest.TestCase): | |||||
event.subject = "test 1" | event.subject = "test 1" | ||||
event.save() | 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"})) | "reference_name": event.name, "status":"Not Sent"})) | ||||
event.description = "test" | 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.starts_on = frappe.utils.add_days(frappe.utils.nowdate(), 2) + " 12:00:00" | ||||
event.save() | 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"})) | "reference_name": event.name, "status":"Not Sent"})) | ||||
frappe.utils.scheduler.trigger(frappe.local.site, "daily", now=True) | frappe.utils.scheduler.trigger(frappe.local.site, "daily", now=True) | ||||