Browse Source

Merge pull request #1317 from rmehta/bulk-priority

[enhancement] added priority in bulk email
version-14
Anand Doshi 9 years ago
parent
commit
d768a125c6
4 changed files with 37 additions and 7 deletions
  1. +4
    -2
      frappe/__init__.py
  2. +6
    -4
      frappe/email/bulk.py
  3. +24
    -1
      frappe/email/doctype/bulk_email/bulk_email.json
  4. +3
    -0
      frappe/utils/data.py

+ 4
- 2
frappe/__init__.py View File

@@ -310,7 +310,8 @@ def sendmail(recipients=(), sender="", subject="No Subject", message="No Message
as_markdown=False, bulk=False, reference_doctype=None, reference_name=None,
unsubscribe_method=None, unsubscribe_params=None, unsubscribe_message=None,
attachments=None, content=None, doctype=None, name=None, reply_to=None,
cc=(), message_id=None, as_bulk=False, send_after=None, expose_recipients=False):
cc=(), message_id=None, as_bulk=False, send_after=None, expose_recipients=False,
bulk_priority=1):
"""Send email using user's default **Email Account** or global default **Email Account**.


@@ -320,6 +321,7 @@ def sendmail(recipients=(), sender="", subject="No Subject", message="No Message
:param message: (or `content`) Email Content.
:param as_markdown: Convert content markdown to HTML.
:param bulk: Send via scheduled email sender **Bulk Email**. Don't send immediately.
:param bulk_priority: Priority for bulk email, default 1.
:param reference_doctype: (or `doctype`) Append as communication to this DocType.
:param reference_name: (or `name`) Append as communication to this document name.
:param unsubscribe_method: Unsubscribe url with options email, doctype, name. e.g. `/api/method/unsubscribe`
@@ -338,7 +340,7 @@ def sendmail(recipients=(), sender="", subject="No Subject", message="No Message
reference_doctype = doctype or reference_doctype, reference_name = name or reference_name,
unsubscribe_method=unsubscribe_method, unsubscribe_params=unsubscribe_params, unsubscribe_message=unsubscribe_message,
attachments=attachments, reply_to=reply_to, cc=cc, message_id=message_id, send_after=send_after,
expose_recipients=expose_recipients)
expose_recipients=expose_recipients, bulk_priority=bulk_priority)
else:
import frappe.email
if as_markdown:


+ 6
- 4
frappe/email/bulk.py View File

@@ -17,7 +17,7 @@ class BulkLimitCrossedError(frappe.ValidationError): pass
def send(recipients=None, sender=None, subject=None, message=None, reference_doctype=None,
reference_name=None, unsubscribe_method=None, unsubscribe_params=None, unsubscribe_message=None,
attachments=None, reply_to=None, cc=(), message_id=None, send_after=None,
expose_recipients=False):
expose_recipients=False, bulk_priority=1):
"""Add email to sending queue (Bulk Email)

:param recipients: List of recipients.
@@ -26,6 +26,7 @@ def send(recipients=None, sender=None, subject=None, message=None, reference_doc
:param message: Email message.
:param reference_doctype: Reference DocType of caller document.
:param reference_name: Reference name of caller document.
:param bulk_priority: Priority for bulk email, default 1.
:param unsubscribe_method: URL method for unsubscribe. Default is `/api/method/frappe.email.bulk.unsubscribe`.
:param unsubscribe_params: additional params for unsubscribed links. default are name, doctype, email
:param attachments: Attachments to be sent.
@@ -90,15 +91,16 @@ def send(recipients=None, sender=None, subject=None, message=None, reference_doc

# add to queue
add(email, sender, subject, email_content, email_text_context, reference_doctype,
reference_name, attachments, reply_to, cc, message_id, send_after)
reference_name, attachments, reply_to, cc, message_id, send_after, bulk_priority)

def add(email, sender, subject, formatted, text_content=None,
reference_doctype=None, reference_name=None, attachments=None, reply_to=None,
cc=(), message_id=None, send_after=None):
cc=(), message_id=None, send_after=None, bulk_priority=1):
"""add to bulk mail queue"""
e = frappe.new_doc('Bulk Email')
e.sender = sender
e.recipient = email
e.priority = bulk_priority

try:
mail = get_email(email, sender=e.sender, formatted=formatted, subject=subject,
@@ -231,7 +233,7 @@ def flush(from_test=False):
for i in xrange(500):
email = frappe.db.sql("""select * from `tabBulk Email` where
status='Not Sent' and ifnull(send_after, "2000-01-01 00:00:00") < %s
order by creation asc limit 1 for update""", now_datetime(), as_dict=1)
order by priority desc, creation asc limit 1 for update""", now_datetime(), as_dict=1)
if email:
email = email[0]
else:


+ 24
- 1
frappe/email/doctype/bulk_email/bulk_email.json View File

@@ -181,6 +181,29 @@
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"default": "1",
"fieldname": "priority",
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Priority",
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
}
],
"hide_heading": 0,
@@ -192,7 +215,7 @@
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"modified": "2015-05-21 07:26:13.627637",
"modified": "2015-09-29 05:16:31.857121",
"modified_by": "Administrator",
"module": "Email",
"name": "Bulk Email",


+ 3
- 0
frappe/utils/data.py View File

@@ -203,6 +203,9 @@ def formatdate(string_date=None, format_string=None):

return babel.dates.format_date(date, format_string, locale=(frappe.local.lang or "").replace("-", "_"))

def format_time(txt):
return babel.dates.format_time(get_time(txt), locale=(frappe.local.lang or "").replace("-", "_"))

def format_datetime(datetime_string, format_string=None):
if not datetime_string:
return


Loading…
Cancel
Save