Merge pull request #5524 from rmehta/email-queue

[rename] Bulk Email to Email Queue
This commit is contained in:
Rushabh Mehta 2016-06-22 13:15:55 +05:30 committed by GitHub
commit 2039b3e192
10 changed files with 27 additions and 30 deletions

View File

@ -101,7 +101,7 @@ class RequestforQuotation(BuyingController):
frappe.sendmail(recipients=data.email_id, sender=sender, subject=subject, frappe.sendmail(recipients=data.email_id, sender=sender, subject=subject,
message=frappe.get_template(template).render(args), message=frappe.get_template(template).render(args),
attachments = [frappe.attach_print('Request for Quotation', self.name)],as_bulk=True) attachments = [frappe.attach_print('Request for Quotation', self.name)])
frappe.msgprint(_("Email sent to supplier {0}").format(data.supplier)) frappe.msgprint(_("Email sent to supplier {0}").format(data.supplier))
@frappe.whitelist() @frappe.whitelist()

View File

@ -15,7 +15,7 @@ def get_data():
"type": "doctype", "type": "doctype",
"name": "Employee Attendance Tool", "name": "Employee Attendance Tool",
"label": _("Employee Attendance Tool"), "label": _("Employee Attendance Tool"),
"description":_("Mark Employee Attendance in Bulk"), "description":_("Mark Attendance for multiple employees"),
"hide_count": True "hide_count": True
}, },
{ {

View File

@ -7,23 +7,23 @@ import frappe
import frappe.utils import frappe.utils
from frappe import throw, _ from frappe import throw, _
from frappe.model.document import Document from frappe.model.document import Document
from frappe.email.bulk import check_bulk_limit from frappe.email.queue import check_email_limit
from frappe.utils.verified_command import get_signed_params, verify_request from frappe.utils.verified_command import get_signed_params, verify_request
from frappe.utils.background_jobs import enqueue from frappe.utils.background_jobs import enqueue
from frappe.utils.scheduler import log from frappe.utils.scheduler import log
from frappe.email.bulk import send from frappe.email.queue import send
from erpnext.crm.doctype.newsletter_list.newsletter_list import add_subscribers from erpnext.crm.doctype.newsletter_list.newsletter_list import add_subscribers
class Newsletter(Document): class Newsletter(Document):
def onload(self): def onload(self):
if self.email_sent: if self.email_sent:
self.get("__onload").status_count = dict(frappe.db.sql("""select status, count(name) self.get("__onload").status_count = dict(frappe.db.sql("""select status, count(name)
from `tabBulk Email` where reference_doctype=%s and reference_name=%s from `tabEmail Queue` where reference_doctype=%s and reference_name=%s
group by status""", (self.doctype, self.name))) or None group by status""", (self.doctype, self.name))) or None
def test_send(self, doctype="Lead"): def test_send(self, doctype="Lead"):
self.recipients = frappe.utils.split_emails(self.test_email_id) self.recipients = frappe.utils.split_emails(self.test_email_id)
self.send_bulk() self.queue_all()
frappe.msgprint(_("Scheduled to send to {0}").format(self.test_email_id)) frappe.msgprint(_("Scheduled to send to {0}").format(self.test_email_id))
def send_emails(self): def send_emails(self):
@ -40,13 +40,13 @@ class Newsletter(Document):
enqueue(send_newsletter, queue='default', timeout=1500, event='send_newsletter', newsletter=self.name) enqueue(send_newsletter, queue='default', timeout=1500, event='send_newsletter', newsletter=self.name)
else: else:
self.send_bulk() self.queue_all()
frappe.msgprint(_("Scheduled to send to {0} recipients").format(len(self.recipients))) frappe.msgprint(_("Scheduled to send to {0} recipients").format(len(self.recipients)))
frappe.db.set(self, "email_sent", 1) frappe.db.set(self, "email_sent", 1)
def send_bulk(self): def queue_all(self):
if not self.get("recipients"): if not self.get("recipients"):
# in case it is called via worker # in case it is called via worker
self.recipients = self.get_recipients() self.recipients = self.get_recipients()
@ -63,7 +63,7 @@ class Newsletter(Document):
reference_doctype = self.doctype, reference_name = self.name, reference_doctype = self.doctype, reference_name = self.name,
unsubscribe_method = "/api/method/erpnext.crm.doctype.newsletter.newsletter.unsubscribe", unsubscribe_method = "/api/method/erpnext.crm.doctype.newsletter.newsletter.unsubscribe",
unsubscribe_params = {"name": self.newsletter_list}, unsubscribe_params = {"name": self.newsletter_list},
bulk_priority = 0) send_priority = 0)
if not frappe.flags.in_test: if not frappe.flags.in_test:
frappe.db.auto_commit_on_many_writes = False frappe.db.auto_commit_on_many_writes = False
@ -76,7 +76,7 @@ class Newsletter(Document):
def validate_send(self): def validate_send(self):
if self.get("__islocal"): if self.get("__islocal"):
throw(_("Please save the Newsletter before sending")) throw(_("Please save the Newsletter before sending"))
check_bulk_limit(self.recipients) check_email_limit(self.recipients)
@frappe.whitelist() @frappe.whitelist()
def get_lead_options(): def get_lead_options():
@ -144,7 +144,7 @@ def subscribe(email):
<p><a href="{2}">{3}</a></p> <p><a href="{2}">{3}</a></p>
""" """
frappe.sendmail(email, subject=_("Confirm Your Email"), content=content.format(*messages), bulk=True) frappe.sendmail(email, subject=_("Confirm Your Email"), content=content.format(*messages))
@frappe.whitelist(allow_guest=True) @frappe.whitelist(allow_guest=True)
def confirm_subscription(email): def confirm_subscription(email):
@ -169,7 +169,7 @@ def confirm_subscription(email):
def send_newsletter(newsletter): def send_newsletter(newsletter):
try: try:
doc = frappe.get_doc("Newsletter", newsletter) doc = frappe.get_doc("Newsletter", newsletter)
doc.send_bulk() doc.queue_all()
except: except:
frappe.db.rollback() frappe.db.rollback()

View File

@ -22,7 +22,7 @@ class TestNewsletter(unittest.TestCase):
def test_send(self): def test_send(self):
self.send_newsletter() self.send_newsletter()
self.assertEquals(len(frappe.get_all("Bulk Email")), 3) self.assertEquals(len(frappe.get_all("Email Queue")), 3)
def test_unsubscribe(self): def test_unsubscribe(self):
# test unsubscribe # test unsubscribe
@ -33,10 +33,10 @@ class TestNewsletter(unittest.TestCase):
unsubscribe(email, "_Test Newsletter List") unsubscribe(email, "_Test Newsletter List")
self.send_newsletter() self.send_newsletter()
self.assertEquals(len(frappe.get_all("Bulk Email")), 2) self.assertEquals(len(frappe.get_all("Email Queue")), 2)
def send_newsletter(self): def send_newsletter(self):
frappe.db.sql("delete from `tabBulk Email`") frappe.db.sql("delete from `tabEmail Queue`")
frappe.delete_doc("Newsletter", "_Test Newsletting") frappe.delete_doc("Newsletter", "_Test Newsletting")
newsletter = frappe.get_doc({ newsletter = frappe.get_doc({
"doctype": "Newsletter", "doctype": "Newsletter",

View File

@ -239,8 +239,7 @@ def send_birthday_reminders():
frappe.sendmail(recipients=filter(lambda u: u not in (e.company_email, e.personal_email, e.user_id), users), frappe.sendmail(recipients=filter(lambda u: u not in (e.company_email, e.personal_email, e.user_id), users),
subject=_("Birthday Reminder for {0}").format(e.employee_name), subject=_("Birthday Reminder for {0}").format(e.employee_name),
message=_("""Today is {0}'s birthday!""").format(e.employee_name), message=_("""Today is {0}'s birthday!""").format(e.employee_name),
reply_to=e.company_email or e.personal_email or e.user_id, reply_to=e.company_email or e.personal_email or e.user_id)
bulk=True)
def get_employees_who_are_born_today(): def get_employees_who_are_born_today():
"""Get Employee properties whose birthday is today.""" """Get Employee properties whose birthday is today."""

View File

@ -20,7 +20,7 @@ class TestEmployee(unittest.TestCase):
self.assertTrue(employee.name in [e.name for e in get_employees_who_are_born_today()]) self.assertTrue(employee.name in [e.name for e in get_employees_who_are_born_today()])
frappe.db.sql("delete from `tabBulk Email`") frappe.db.sql("delete from `tabEmail Queue`")
hr_settings = frappe.get_doc("HR Settings", "HR Settings") hr_settings = frappe.get_doc("HR Settings", "HR Settings")
hr_settings.stop_birthday_reminders = 0 hr_settings.stop_birthday_reminders = 0
@ -28,7 +28,7 @@ class TestEmployee(unittest.TestCase):
send_birthday_reminders() send_birthday_reminders()
bulk_mails = frappe.db.sql("""select * from `tabBulk Email`""", as_dict=True) email_queue = frappe.db.sql("""select * from `tabEmail Queue`""", as_dict=True)
self.assertTrue("Subject: Birthday Reminder for {0}".format(employee.employee_name) \ self.assertTrue("Subject: Birthday Reminder for {0}".format(employee.employee_name) \
in bulk_mails[0].message) in email_queue[0].message)

View File

@ -214,7 +214,6 @@ class SalarySlip(TransactionBase):
if receiver: if receiver:
subj = 'Salary Slip - ' + cstr(self.month) +'/'+cstr(self.fiscal_year) subj = 'Salary Slip - ' + cstr(self.month) +'/'+cstr(self.fiscal_year)
frappe.sendmail([receiver], subject=subj, message = _("Please see attachment"), frappe.sendmail([receiver], subject=subj, message = _("Please see attachment"),
attachments=[frappe.attach_print(self.doctype, self.name, file_name=self.name)], attachments=[frappe.attach_print(self.doctype, self.name, file_name=self.name)], reference_doctype= self.doctype, reference_name= self.name)
bulk=True, reference_doctype= self.doctype, reference_name= self.name)
else: else:
msgprint(_("{0}: Employee email not found, hence email not sent").format(self.employee_name)) msgprint(_("{0}: Employee email not found, hence email not sent").format(self.employee_name))

View File

@ -98,7 +98,7 @@ class TestSalarySlip(unittest.TestCase):
self.assertTrue(salary_slip_test_employee.has_permission("read")) self.assertTrue(salary_slip_test_employee.has_permission("read"))
def test_email_salary_slip(self): def test_email_salary_slip(self):
frappe.db.sql("delete from `tabBulk Email`") frappe.db.sql("delete from `tabEmail Queue`")
hr_settings = frappe.get_doc("HR Settings", "HR Settings") hr_settings = frappe.get_doc("HR Settings", "HR Settings")
hr_settings.email_salary_slip_to_employee = 1 hr_settings.email_salary_slip_to_employee = 1
@ -106,8 +106,8 @@ class TestSalarySlip(unittest.TestCase):
self.make_employee("test_employee@example.com") self.make_employee("test_employee@example.com")
self.make_employee_salary_slip("test_employee@example.com") self.make_employee_salary_slip("test_employee@example.com")
bulk_mails = frappe.db.sql("""select name from `tabBulk Email`""") email_queue = frappe.db.sql("""select name from `tabEmail Queue`""")
self.assertTrue(bulk_mails) self.assertTrue(email_queue)
def make_employee(self, user): def make_employee(self, user):

View File

@ -144,7 +144,7 @@ class Project(Document):
for user in self.users: for user in self.users:
if user.welcome_email_sent==0: if user.welcome_email_sent==0:
frappe.sendmail(user.user, subject=_("Project Collaboration Invitation"), content=content.format(*messages), bulk=True) frappe.sendmail(user.user, subject=_("Project Collaboration Invitation"), content=content.format(*messages))
user.welcome_email_sent=1 user.welcome_email_sent=1

View File

@ -60,7 +60,6 @@ class EmailDigest(Document):
recipients=user_id, recipients=user_id,
subject="{frequency} Digest".format(frequency=self.frequency), subject="{frequency} Digest".format(frequency=self.frequency),
message=msg_for_this_receipient, message=msg_for_this_receipient,
bulk=True,
reference_doctype = self.doctype, reference_doctype = self.doctype,
reference_name = self.name, reference_name = self.name,
unsubscribe_message = _("Unsubscribe from this Email Digest")) unsubscribe_message = _("Unsubscribe from this Email Digest"))