[newsletter] show send progess [issue] webnotes/erpnext#531

This commit is contained in:
Anand Doshi 2013-08-06 17:01:28 +05:30
parent d5b06f78a5
commit 220b597b06
3 changed files with 58 additions and 31 deletions

View File

@ -1,6 +1,17 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
// License: GNU General Public License v3. See license.txt
cur_frm.cscript.onload = function(doc) {
return wn.call({
method: "support.doctype.newsletter.newsletter.get_lead_options",
type: "GET",
callback: function(r) {
set_field_options("lead_source", r.message.sources.join("\n"))
set_field_options("lead_status", r.message.statuses.join("\n"))
}
});
}
cur_frm.cscript.refresh = function(doc) {
erpnext.hide_naming_series();
if(!doc.__islocal && !cint(doc.email_sent) && !doc.__unsaved
@ -11,18 +22,42 @@ cur_frm.cscript.refresh = function(doc) {
});
})
}
cur_frm.cscript.setup_dashboard();
if(doc.__islocal && !doc.send_from) {
cur_frm.set_value("send_from",
repl("%(fullname)s <%(email)s>", wn.user_info(doc.owner)));
}
return wn.call({
method: "support.doctype.newsletter.newsletter.get_lead_options",
type: "GET",
callback: function(r) {
set_field_options("lead_source", r.message.sources.join("\n"))
set_field_options("lead_status", r.message.statuses.join("\n"))
}
cur_frm.cscript.setup_dashboard = function() {
cur_frm.dashboard.reset();
if(!cur_frm.doc.__islocal && cint(cur_frm.doc.email_sent) && cur_frm.doc.__status_count) {
var stat = cur_frm.doc.__status_count;
var total = wn.utils.sum($.map(stat, function(v) { return v; }));
if(total) {
$.each(stat, function(k, v) {
stat[k] = flt(v * 100 / total, 2);
});
cur_frm.dashboard.add_progress("Status", [
{
title: stat["Sent"] + "% Sent",
width: stat["Sent"],
progress_class: "progress-bar-success"
},
{
title: stat["Sending"] + "% Sending",
width: stat["Sending"],
progress_class: "progress-bar-warning"
},
{
title: stat["Error"] + "% Error",
width: stat["Error"],
progress_class: "progress-bar-danger"
}
]);
}
})
}
}

View File

@ -11,6 +11,12 @@ from webnotes import _
class DocType():
def __init__(self, d, dl):
self.doc, self.doclist = d, dl
def onload(self):
if self.doc.email_sent:
self.doc.fields["__status_count"] = dict(webnotes.conn.sql("""select status, count(*)
from `tabBulk Email` where ref_doctype=%s and ref_docname=%s
group by status""", (self.doc.doctype, self.doc.name))) or None
def test_send(self, doctype="Lead"):
self.recipients = self.doc.test_email_id.split(",")
@ -74,7 +80,8 @@ class DocType():
send(recipients = self.recipients, sender = sender,
subject = self.doc.subject, message = self.doc.message,
doctype = self.send_to_doctype, email_field = "email_id")
doctype = self.send_to_doctype, email_field = "email_id",
ref_doctype = self.doc.doctype, ref_docname = self.doc.name)
webnotes.conn.auto_commit_on_many_writes = False
@ -91,8 +98,10 @@ class DocType():
@webnotes.whitelist()
def get_lead_options():
return {
"sources": ["All"] + webnotes.conn.sql_list("""select distinct source from tabLead"""),
"statuses": ["All"]+ webnotes.conn.sql_list("""select distinct status from tabLead""")
"sources": ["All"] + filter(None,
webnotes.conn.sql_list("""select distinct source from tabLead""")),
"statuses": ["All"] + filter(None,
webnotes.conn.sql_list("""select distinct status from tabLead"""))
}

View File

@ -41,7 +41,7 @@ def get_blog_list(start=0, by=None, category=None):
import webnotes.utils
for res in result:
from webnotes.utils import global_date_format, get_fullname
from webnotes.utils import global_date_format
res['published'] = global_date_format(res['creation'])
if not res['content']:
res['content'] = webnotes.webutils.get_html(res['page_name'])
@ -101,28 +101,11 @@ def add_comment(args=None):
doctype='Comment',
email_field='comment_by',
subject='New Comment on Blog: ' + blog.title,
message='%(comment)s<p>By %(comment_by_fullname)s</p>' % args)
message='%(comment)s<p>By %(comment_by_fullname)s</p>' % args,
ref_doctype='Blog Post', ref_docname=blog.name)
return comment_html.replace("\n", "")
@webnotes.whitelist(allow_guest=True)
def add_subscriber(name, email_id):
"""add blog subscriber to lead"""
name = webnotes.conn.sql("""select name from tabLead where email_id=%s""", email)
from webnotes.model.doc import Document
if name:
lead = Document('Lead', name[0][0])
else:
lead = Document('Lead')
if not lead.source: lead.source = 'Blog'
lead.unsubscribed = 0
lead.blog_subscriber = 1
lead.lead_name = name
lead.email_id = email
lead.save()
def get_blog_content(blog_page_name):
import webnotes.webutils
content = webnotes.webutils.get_html(blog_page_name)