added Email List to Newsletter
diff --git a/support/doctype/newsletter/newsletter.py b/support/doctype/newsletter/newsletter.py
index 79464c0..97b4779 100644
--- a/support/doctype/newsletter/newsletter.py
+++ b/support/doctype/newsletter/newsletter.py
@@ -18,6 +18,8 @@
import webnotes
import webnotes.utils
+from webnotes.utils import cstr
+from webnotes.model.doc import Document
class DocType():
def __init__(self, d, dl):
@@ -46,8 +48,7 @@
}
def send_emails(self):
- """send emails to leads and customers"""
- # TODO: create unsubscribed check in customer
+ """send emails to leads and customers"""
if self.doc.email_sent:
webnotes.msgprint("""Newsletter has already been sent""", raise_exception=1)
@@ -67,6 +68,14 @@
if self.doc.blog_subscribers:
self.send("blog_subscribers", "Lead")
+
+ if self.doc.email_list:
+ email_list = [cstr(email).strip() for email in self.doc.email_list.split(",")]
+ for email in email_list:
+ if not webnotes.conn.exists({"doctype": "Lead", "email_id": email}):
+ create_lead(email)
+
+ self.send(email_list, "Lead")
webnotes.conn.set(self.doc, "email_sent", 1)
webnotes.msgprint("""Scheduled to send to %s""" % \
@@ -78,9 +87,8 @@
recipients = self.doc.test_email_id.split(",")
from webnotes.utils.email_lib.bulk import send
send(recipients = recipients, sender = sender,
- subject = self.doc.subject, message = self.get_message(),
- doctype = doctype, email_field = args["email_field"],
- first_name_field = args["first_name_field"], last_name_field = "")
+ subject = self.doc.subject, message = self.doc.message,
+ doctype = doctype, email_field = args["email_field"])
webnotes.msgprint("""Scheduled to send to %s""" % self.doc.test_email_id)
def get_recipients(self, key):
@@ -89,21 +97,47 @@
self.all_recipients += recipients
return recipients
- def get_message(self):
- if not hasattr(self, "message"):
- import markdown2
- self.message = markdown2.markdown(self.doc.message)
- return self.message
-
def send(self, query_key, doctype):
webnotes.conn.auto_commit_on_many_writes = True
- recipients = self.get_recipients(query_key)
+ if isinstance(query_key, basestring) and self.query_map.has_key(query_key):
+ recipients = self.get_recipients(query_key)
+ else:
+ recipients = query_key
sender = webnotes.utils.get_email_id(self.doc.owner)
args = self.dt_map[doctype]
- self.send_count[doctype] = self.send_count.setdefault(doctype, 0) + len(recipients)
+ self.send_count[doctype] = self.send_count.setdefault(doctype, 0) + \
+ len(recipients)
from webnotes.utils.email_lib.bulk import send
send(recipients = recipients, sender = sender,
- subject = self.doc.subject, message = self.get_message(),
- doctype = doctype, email_field = args["email_field"],
- first_name_field = args["first_name_field"], last_name_field = "")
\ No newline at end of file
+ subject = self.doc.subject, message = self.doc.message,
+ doctype = doctype, email_field = args["email_field"])
+
+lead_naming_series = None
+def create_lead(email):
+ """create a lead if it does not exist"""
+ lead = Document("Lead")
+ lead.fields["__islocal"] = 1
+ lead.lead_name = email
+ lead.email_id = email
+ lead.status = "Open"
+ lead.naming_series = lead_naming_series or get_lead_naming_series()
+ lead.company = webnotes.conn.get_default("company")
+ lead.source = "Email"
+ lead.save()
+
+def get_lead_naming_series():
+ """gets lead's default naming series"""
+ global lead_naming_series
+ naming_series_field = webnotes.get_doctype("Lead").get_field("naming_series")
+ if naming_series_field.default:
+ lead_naming_series = naming_series_field.default
+ else:
+ latest_naming_series = webnotes.conn.sql("""select naming_series
+ from `tabLead` order by creation desc limit 1""")
+ if latest_naming_series:
+ lead_naming_series = latest_naming_series[0][0]
+ else:
+ lead_naming_series = filter(None, naming_series_field.options.split("\n"))[0]
+
+ return lead_naming_series
diff --git a/support/doctype/newsletter/newsletter.txt b/support/doctype/newsletter/newsletter.txt
index b32b875..11ee262 100644
--- a/support/doctype/newsletter/newsletter.txt
+++ b/support/doctype/newsletter/newsletter.txt
@@ -2,9 +2,9 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-11-28 11:26:23",
+ "creation": "2012-12-04 11:45:44",
"modified_by": "Administrator",
- "modified": "2012-12-03 17:10:41"
+ "modified": "2012-12-06 13:07:47"
},
{
"autoname": "naming_series:",
@@ -107,6 +107,15 @@
"permlevel": 0
},
{
+ "description": "Comma separated list of email addresses",
+ "colour": "White:FFF",
+ "doctype": "DocField",
+ "label": "Send to this list",
+ "fieldname": "email_list",
+ "fieldtype": "Text",
+ "permlevel": 0
+ },
+ {
"doctype": "DocField",
"label": "Newsletter Content",
"fieldname": "newsletter_content",
@@ -126,9 +135,8 @@
"colour": "White:FFF",
"doctype": "DocField",
"label": "Message",
- "options": "Markdown",
"fieldname": "message",
- "fieldtype": "Code",
+ "fieldtype": "Text Editor",
"reqd": 0,
"permlevel": 0
},
diff --git a/website/blog.py b/website/blog.py
index 0e13107..9491e25 100644
--- a/website/blog.py
+++ b/website/blog.py
@@ -119,8 +119,6 @@
send(recipients=list(set(commentors + [blog['owner']])),
doctype='Comment',
email_field='comment_by',
- first_name_field="comment_by_fullname",
- last_name_field="NA",
subject='New Comment on Blog: ' + blog['title'],
message='%(comment)s<p>By %(comment_by_fullname)s</p>' % args)
diff --git a/website/doctype/blog/blog.py b/website/doctype/blog/blog.py
index 56f6c86..92ee974 100644
--- a/website/doctype/blog/blog.py
+++ b/website/doctype/blog/blog.py
@@ -44,8 +44,7 @@
# send the blog
send(recipients = recipients, doctype='Lead', email_field='email_id',
- first_name_field = 'lead_name', last_name_field="", subject=self.doc.title,
- message = markdown(content))
+ subject=self.doc.title, message = markdown(content))
webnotes.conn.set(self.doc, 'email_sent', 1)
webnotes.msgprint("""Scheduled to send to %s subscribers""" % len(recipients))