From a7e21eb4848098e585c379b1c146bc88fdcdc3dc Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 20 Mar 2015 14:08:46 +0530 Subject: [PATCH] [newsletter-list] fixes, patch fix --- .../newsletter_list/newsletter_list.js | 16 ++++++++++ .../newsletter_list/newsletter_list.py | 30 ++++++++++++++++++- erpnext/patches/v5_0/rename_customer_issue.py | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/erpnext/crm/doctype/newsletter_list/newsletter_list.js b/erpnext/crm/doctype/newsletter_list/newsletter_list.js index 88437699023..ed0ac5e210e 100644 --- a/erpnext/crm/doctype/newsletter_list/newsletter_list.js +++ b/erpnext/crm/doctype/newsletter_list/newsletter_list.js @@ -21,6 +21,22 @@ frappe.ui.form.on("Newsletter List", "refresh", function(frm) { }, __("Import Subscribers"), __("Import")); }); + frm.add_custom_button(__("Add Subscribers"), function() { + frappe.prompt({fieldtype:"Text", + label:__("Email Ids"), fieldname:"email_list", reqd:1}, function(data) { + frappe.call({ + method: "erpnext.crm.doctype.newsletter_list.newsletter_list.add_subscribers", + args: { + "name": frm.doc.name, + "email_list": data.email_list + }, + callback: function(r) { + frm.set_value("total_subscribers", r.message); + } + }) + }, __("Add Subscribers"), __("Add")); + }); + frm.add_custom_button(__("New Newsletter"), function() { frappe.route_options = {"newsletter_list": frm.doc.name}; new_doc("Newsletter"); diff --git a/erpnext/crm/doctype/newsletter_list/newsletter_list.py b/erpnext/crm/doctype/newsletter_list/newsletter_list.py index 583798dc603..010678ad0d6 100644 --- a/erpnext/crm/doctype/newsletter_list/newsletter_list.py +++ b/erpnext/crm/doctype/newsletter_list/newsletter_list.py @@ -5,6 +5,8 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document +from frappe.utils import validate_email_add +from frappe import _ class NewsletterList(Document): def onload(self): @@ -35,7 +37,7 @@ class NewsletterList(Document): if e.args[0]!=1062: raise - frappe.msgprint(frappe._("{0} subscribers added").format(added)) + frappe.msgprint(_("{0} subscribers added").format(added)) return self.update_total_subscribers() @@ -50,3 +52,29 @@ def import_from(name, doctype): nlist = frappe.get_doc("Newsletter List", name) if nlist.has_permission("write"): return nlist.import_from(doctype) + +@frappe.whitelist() +def add_subscribers(name, email_list): + count = 0 + for email in email_list.replace(",", "\n").split("\n"): + email = email.strip() + if not validate_email_add(email): + frappe.throw(_("Invalid Email '{0}'").format(email)) + + if email: + try: + frappe.get_doc({ + "doctype": "Newsletter List Subscriber", + "newsletter_list": name, + "email": email + }).insert() + + count += 1 + except Exception, e: + # ignore duplicate + if e.args[0] != 1062: + raise + + frappe.msgprint(_("{0} subscribers added").format(count)) + + return frappe.get_doc("Newsletter List", name).update_total_subscribers() diff --git a/erpnext/patches/v5_0/rename_customer_issue.py b/erpnext/patches/v5_0/rename_customer_issue.py index 68bab3f9061..5b16fd21452 100644 --- a/erpnext/patches/v5_0/rename_customer_issue.py +++ b/erpnext/patches/v5_0/rename_customer_issue.py @@ -1,5 +1,5 @@ import frappe def execute(): - if frappe.db.table_exists("tabCustomer Issue"): + if frappe.db.table_exists("Customer Issue"): frappe.rename_doc("DocType", "Customer Issue", "Warranty Claim")