Selaa lähdekoodia

Email designs (#3786)

* New message email

* Mentioned in a comment

* File backup email

* Feedback email

* Administrator logged in email

* Upcoming events email

* minor

* Add header title and indicator color
version-14
Faris Ansari 8 vuotta sitten
committed by Rushabh Mehta
vanhempi
commit
3f93565553
13 muutettua tiedostoa jossa 78 lisäystä ja 48 poistoa
  1. +8
    -7
      frappe/core/doctype/communication/comment.py
  2. +7
    -3
      frappe/core/doctype/feedback_trigger/feedback_trigger.py
  3. +13
    -17
      frappe/core/doctype/user/user.py
  4. +11
    -9
      frappe/desk/doctype/event/event.py
  5. +8
    -3
      frappe/desk/page/backups/backups.py
  6. +6
    -3
      frappe/desk/page/chat/chat.py
  7. +3
    -0
      frappe/public/css/email.css
  8. +4
    -0
      frappe/public/less/email.less
  9. +3
    -0
      frappe/templates/emails/administrator_logged_in.html
  10. +1
    -1
      frappe/templates/emails/feedback_request_url.html
  11. +3
    -3
      frappe/templates/emails/new_message.html
  12. +9
    -0
      frappe/templates/emails/upcoming_events.html
  13. +2
    -2
      frappe/utils/jinja.py

+ 8
- 7
frappe/core/doctype/communication/comment.py Näytä tiedosto

@@ -82,12 +82,7 @@ def notify_mentions(doc):

sender_fullname = get_fullname(frappe.session.user)
parent_doc_label = "{0} {1}".format(_(doc.reference_doctype), doc.reference_name)
subject = _("{0} mentioned you in a comment in {1}").format(sender_fullname, parent_doc_label)
message = frappe.get_template("templates/emails/mentioned_in_comment.html").render({
"sender_fullname": sender_fullname,
"comment": doc,
"link": get_link_to_form(doc.reference_doctype, doc.reference_name, label=parent_doc_label)
})
subject = _("{0} mentioned you in a comment").format(sender_fullname)

recipients = [frappe.db.get_value("User", {"enabled": 1, "username": username, "user_type": "System User"})
for username in mentions]
@@ -96,7 +91,13 @@ def notify_mentions(doc):
recipients=recipients,
sender=frappe.session.user,
subject=subject,
message=message
template="mentioned_in_comment",
args={
"sender_fullname": sender_fullname,
"comment": doc,
"link": get_link_to_form(doc.reference_doctype, doc.reference_name, label=parent_doc_label)
},
header=[_('New Mention'), 'orange']
)

def get_comments_from_parent(doc):


+ 7
- 3
frappe/core/doctype/feedback_trigger/feedback_trigger.py Näytä tiedosto

@@ -66,12 +66,16 @@ def send_feedback_request(reference_doctype, reference_name, trigger="Manual", d
feedback_request, url = get_feedback_request_url(reference_doctype,
reference_name, details.get("recipients"), trigger)

feedback_url = frappe.render_template("templates/emails/feedback_request_url.html", { "url": url })
feedback_msg = frappe.render_template("templates/emails/feedback_request_url.html", { "url": url })

# appending feedback url to message body
details.update({ "message": "{message}{feedback_url}".format(
message = "{message}{feedback_msg}".format(
message=details.get("message"),
feedback_url=feedback_url)
feedback_msg=feedback_msg
)
details.update({
"message": message,
"header": [details.get('subject'), 'blue']
})

if details:


+ 13
- 17
frappe/core/doctype/user/user.py Näytä tiedosto

@@ -858,25 +858,21 @@ def notify_admin_access_to_system_manager(login_manager=None):
and login_manager.user == "Administrator"
and frappe.local.conf.notify_admin_access_to_system_manager):

message = """<p>
{dear_system_manager} <br><br>
{access_message} <br><br>
{is_it_unauthorized}
</p>""".format(
dear_system_manager=_("Dear System Manager,"),

access_message=_("""Administrator accessed {0} on {1} via IP Address {2}.""").format(
"""<a href="{site}" target="_blank">{site}</a>""".format(site=frappe.local.request.host_url),
"""<b>{date_and_time}</b>""".format(date_and_time=format_datetime(now_datetime(), format_string="medium")),
frappe.local.request_ip
),

is_it_unauthorized=_("If you think this is unauthorized, please change the Administrator password.")
site = '<a href="{0}" target="_blank">{0}</a>'.format(frappe.local.request.host_url)
date_and_time = '<b>{0}</b>'.format(format_datetime(now_datetime(), format_string="medium"))
ip_address = frappe.local.request_ip

access_message = _('Administrator accessed {0} on {1} via IP Address {2}.').format(
site, date_and_time, ip_address)

frappe.sendmail(
recipients=get_system_managers(),
subject=_("Administrator Logged In"),
template="administrator_logged_in",
args={'access_message': access_message},
header=[subject, 'orange']
)

frappe.sendmail(recipients=get_system_managers(), subject=_("Administrator Logged In"),
message=message)

def extract_mentions(txt):
"""Find all instances of @username in the string.
The mentions will be separated by non-word characters or may appear at the start of the string"""


+ 11
- 9
frappe/desk/doctype/event/event.py Näytä tiedosto

@@ -7,7 +7,7 @@ import frappe
import json

from frappe.utils import (getdate, cint, add_months, date_diff, add_days,
nowdate, get_datetime_str, cstr, get_datetime, now_datetime)
nowdate, get_datetime_str, cstr, get_datetime, now_datetime, format_datetime)
from frappe.model.document import Document
from frappe.utils.user import get_enabled_system_users
from frappe.desk.reportview import get_filters_cond
@@ -48,20 +48,22 @@ def send_event_digest():
for user in get_enabled_system_users():
events = get_events(today, today, user.name, for_reminder=True)
if events:
text = ""
frappe.set_user_lang(user.name, user.language)

text = "<h3>" + frappe._("Events In Today's Calendar") + "</h3>"
for e in events:
e.starts_on = format_datetime(e.starts_on, 'hh:mm a')
if e.all_day:
e.starts_on = "All Day"
text += "<h4>%(starts_on)s: %(subject)s</h4><p>%(description)s</p>" % e

text += '<p style="color: #888; font-size: 80%; margin-top: 20px; padding-top: 10px; border-top: 1px solid #eee;">'\
+ frappe._("Daily Event Digest is sent for Calendar Events where reminders are set.")+'</p>'

frappe.sendmail(recipients=user.email, subject=frappe._("Upcoming Events for Today"),
content = text)
frappe.sendmail(
recipients=user.email,
subject=frappe._("Upcoming Events for Today"),
template="upcoming_events",
args={
'events': events,
},
header=[frappe._("Events in Today's Calendar"), 'blue']
)

@frappe.whitelist()
def get_events(start, end, user=None, for_reminder=False, filters=None):


+ 8
- 3
frappe/desk/page/backups/backups.py Näytä tiedosto

@@ -76,9 +76,14 @@ def backup_files_and_notify_user(user_email=None):
backup_files = backup(with_files=True)
get_downloadable_links(backup_files)

subject = "File backup is ready"
message = frappe.render_template('frappe/templates/emails/file_backup_notification.html', backup_files, is_path=True)
frappe.sendmail(recipients=[user_email], subject=subject, message=message)
subject = _("File backup is ready")
frappe.sendmail(
recipients=[user_email],
subject=subject,
template="file_backup_notification",
args=backup_files,
header=[subject, 'green']
)

def get_downloadable_links(backup_files):
for key in ['backup_path_files', 'backup_path_private_files']:


+ 6
- 3
frappe/desk/page/chat/chat.py Näytä tiedosto

@@ -6,6 +6,7 @@ import frappe
from frappe.desk.notifications import delete_notification_count_for
from frappe.core.doctype.user.user import STANDARD_USERS
from frappe.utils import cint
from frappe import _

@frappe.whitelist()
def get_list(arg=None):
@@ -132,11 +133,13 @@ def _notify(contact, txt, subject=None):
frappe.sendmail(\
recipients=contact,
sender= frappe.db.get_value("User", frappe.session.user, "email"),
subject=subject or "New Message from " + get_fullname(frappe.session.user),
message=frappe.get_template("templates/emails/new_message.html").render({
subject=subject or _("New Message from {0}").format(get_fullname(frappe.session.user)),
template="new_message",
args={
"from": get_fullname(frappe.session.user),
"message": txt,
"link": get_url()
}))
},
header=[_('New Message'), 'orange'])
except frappe.OutgoingEmailError:
pass

+ 3
- 0
frappe/public/css/email.css Näytä tiedosto

@@ -121,6 +121,9 @@ hr {
.text-small {
font-size: 10px;
}
.text-bold {
font-weight: bold;
}
.indicator {
width: 8px;
height: 8px;


+ 4
- 0
frappe/public/less/email.less Näytä tiedosto

@@ -152,6 +152,10 @@ hr {
font-size: @text-small;
}

.text-bold {
font-weight: bold;
}

.indicator {
width: 8px;
height: 8px;


+ 3
- 0
frappe/templates/emails/administrator_logged_in.html Näytä tiedosto

@@ -0,0 +1,3 @@
<p>{{ _("Dear System Manager,") }} </p>
<p>{{ access_message }}</p>
<p>{{ _("If you think this is unauthorized, please change the Administrator password.") }}</p>

+ 1
- 1
frappe/templates/emails/feedback_request_url.html Näytä tiedosto

@@ -5,5 +5,5 @@
<a class="rating" style="font-size: 20px; text-decoration: none; color: grey" href="{{url}}&rating=3">★</a>
<a class="rating" style="font-size: 20px; text-decoration: none; color: grey" href="{{url}}&rating=4">★</a>
<a class="rating" style="font-size: 20px; text-decoration: none; color: grey" href="{{url}}&rating=5">★</a>
<p>{{ _("1 star being lowest & 5 stars being highest rating") }}</p>
<div class="more-info">{{ _("1 star being lowest & 5 stars being highest rating") }}</div>
</div>

+ 3
- 3
frappe/templates/emails/new_message.html Näytä tiedosto

@@ -1,5 +1,5 @@
<h3>New Message</h3>
<p>You have a new message from: <b>{{ from }}</b></p>
<p>{{ message }}</p>
<hr>
<p><a href="{{ link }}">Login and view in Browser</a></p>
<div class="more-info">
<a href="{{ link }}">Login and view in Browser</a>
</div>

+ 9
- 0
frappe/templates/emails/upcoming_events.html Näytä tiedosto

@@ -0,0 +1,9 @@
{% for e in events %}
<p>
<span class="text-bold">{{ e.starts_on }}: </span><span>{{ e.subject }}</span>
<div>{{ e.description or '' }}</div>
</p>
{% endfor %}
<p class="more-info">
{{ _("Daily Event Digest is sent for Calendar Events where reminders are set.") }}
</p>

+ 2
- 2
frappe/utils/jinja.py Näytä tiedosto

@@ -28,8 +28,8 @@ def get_email_from_template(name, args):
args = args or {}
try:
message = get_template('templates/emails/' + name + '.html').render(args)
except TemplateNotFound:
message = None
except TemplateNotFound as e:
raise e

try:
text_content = get_template('templates/emails/' + name + '.txt').render(args)


Ladataan…
Peruuta
Tallenna