fix: store email content in notification log and send email after insert

This commit is contained in:
prssanna 2019-10-03 15:39:36 +05:30
parent 8b113f6213
commit ae0677a716
2 changed files with 32 additions and 19 deletions

View file

@ -7,6 +7,7 @@
"subject",
"user",
"type",
"email_content",
"column_break_4",
"reference_doctype",
"seen",
@ -72,11 +73,17 @@
"options": "User",
"read_only": 1,
"search_index": 1
},
{
"fieldname": "email_content",
"fieldtype": "Text",
"label": "Email Content",
"read_only": 1
}
],
"in_create": 1,
"modified": "2019-09-20 15:14:25.646766",
"modified_by": "Administrator",
"modified": "2019-10-03 15:35:05.980370",
"modified_by": "frappetestuser2@gmail.com",
"module": "Core",
"name": "Notification Log",
"owner": "Administrator",

View file

@ -13,6 +13,8 @@ class NotificationLog(Document):
def after_insert(self):
frappe.publish_realtime('notification', after_commit=True, user=self.user)
if is_email_notifications_enabled(self.user):
send_notification_email(self)
def get_permission_query_conditions(user):
@ -37,35 +39,39 @@ def create_notification_log(names, doc, email_content = None):
else:
_doc = frappe.new_doc('Notification Log')
_doc.type = doc.type
_doc.user = name.strip()
_doc.user = user
_doc.reference_doctype = doc.reference_doctype
_doc.reference_name = doc.reference_name
_doc.reference_user = doc.reference_user
_doc.subject = doc.subject.replace('<div>', '').replace('</div>', '')
_doc.email_content = email_content
_doc.insert(ignore_permissions=True)
if is_email_notifications_enabled(user):
send_notification_email(_doc, user, email_content)
def send_notification_email(doc, user, description=None):
def send_notification_email(doc):
from frappe.utils import get_url_to_form, strip_html, get_url
doc_link = get_url_to_form(doc.reference_doctype, doc.reference_name)
header = get_email_header(doc)
email_subject = strip_html(doc.subject)
frappe.sendmail(
recipients = user,
sender = frappe.session.user,
subject = email_subject,
template = "new_notification",
args = {
"body_content": doc.subject,
"description": description,
"doc_link": doc_link,
"link": get_url()
},
header = [header, 'orange']
)
try:
frappe.sendmail(
recipients = doc.user,
sender = frappe.session.user,
subject = email_subject,
template = "new_notification",
args = {
"body_content": doc.subject,
"description": doc.email_content,
"doc_link": doc_link,
"link": get_url()
},
header = [header, 'orange']
)
except:
pass
def get_email_header(doc):
if doc.type == 'Mention' or doc.type == 'Assignment':