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))