added unsubscribed fields in Lead and Contact and cleaned up sendmail function
diff --git a/erpnext/home/doctype/home_control/home_control.py b/erpnext/home/doctype/home_control/home_control.py
index fba711e..b1ddda4 100644
--- a/erpnext/home/doctype/home_control/home_control.py
+++ b/erpnext/home/doctype/home_control/home_control.py
@@ -118,22 +118,6 @@
out[dt][s[0]] = cint(cnt)
return out
- def send_feedback(self, args):
- args = json.loads(args)
-
- fb_sender = sql("select concat_ws(' ',first_name, last_name), email from tabProfile where name=%s", session['user'])
- fb_subject = 'Feedback : ' + args['subject']
-
-
- fb_msg = '''
- <div style="font-size:14px; padding:8px; border:1px solid #DDF">
- <div style="margin-bottom:16px">%s wrote,</div>
- <div>%s</div>
- </div>
- ''' % (fb_sender[0][0], args['feedback'])
-
- sendmail('info@webnotestech.com', fb_sender[0][1], msg = fb_msg, subject=args['subject'],parts=[], cc=[], attach=[])
-
def get_dt_help(self,dt):
return sql("select description from tabDocType where name=%s",dt)[0][0] or ''
diff --git a/erpnext/projects/doctype/project_control/project_control.py b/erpnext/projects/doctype/project_control/project_control.py
index 0dcd1a9..9928ffd 100644
--- a/erpnext/projects/doctype/project_control/project_control.py
+++ b/erpnext/projects/doctype/project_control/project_control.py
@@ -155,7 +155,6 @@
<p>If you have already completed this task, please update the system</p>
<p>Good Luck!</p>
<p>(This notification is autogenerated)</p>""" % i
- sendmail(i['allocated_to'], sender='automail@webnotestech.com', msg=msg2,send_now=1, \
- subject='A task has been assigned')
+ sendmail(i['allocated_to'], msg=msg2, subject='A task has been assigned')
sql("update `tabTask` set sent_reminder='1' where name='%(name)s' and allocated_to= '%(allocated_to)s'" % i)
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 552a4c8..bfd98db 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -115,10 +115,7 @@
<p><b>Expected End Date:</b> %(exp_end_date)s</p>
<p><b>Details:</b> %(description)s</p>
<p>(This notification is autogenerated)</p>""" % i
- sendmail(self.doc.allocated_to, sender='automail@webnotestech.com', msg=msg2,send_now=1,\
- subject= task_label + self.doc.subject)
-
-
+ sendmail(self.doc.allocated_to, msg=msg2,subject= task_label + self.doc.subject)
#validate before closing task
def validate_for_closed(self):
diff --git a/erpnext/selling/doctype/lead/lead.js b/erpnext/selling/doctype/lead/lead.js
index 57f2bee..504b0bd 100644
--- a/erpnext/selling/doctype/lead/lead.js
+++ b/erpnext/selling/doctype/lead/lead.js
@@ -110,16 +110,6 @@
);
}
-// send email
-// ===============================================================
-cur_frm.cscript.send_email = function(doc,cdt,cdn){
- if(doc.__islocal != 1){
- $c_obj(make_doclist(doc.doctype, doc.name),'send_mail','',function(r,rt){});
- }else{
- msgprint("Please save lead first before sending email")
- }
-}
-
// Create New Opportunity
// ===============================================================
cur_frm.cscript['Create Opportunity'] = function(){
diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py
index 166e4fa..cdb278e 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/erpnext/selling/doctype/lead/lead.py
@@ -82,15 +82,9 @@
def on_update(self):
- # Add to calendar
- # ========================================================================
if self.doc.contact_by:
self.add_calendar_event()
- if session['user'] == 'Guest':
- if self.doc.email_id:
- self.send_email_notification()
-
if not self.doc.naming_series:
if session['user'] == 'Guest':
import webnotes.model.doctype
@@ -102,37 +96,6 @@
else:
msgprint("Please specify naming series")
raise Exception
-
- def send_email_notification(self):
- if not validate_email_add(self.doc.email_id.strip(' ')):
- msgprint('error:%s is not a valid email id' % self.doc.email_id.strip(' '))
- raise Exception
- else:
- subject = 'Thank you for interest in erpnext'
-
- sendmail([self.doc.email_id.strip(' ')], sender = sender_email[0][0], subject = subject , parts = [['text/html', self.get_notification_msg()]])
- msgprint("Mail Sent")
-
- def get_notification_msg(self):
- t = """
- <html>
- <body>
- Dear %s,<br><br>
-
- Thank you for contacting us.<br><br>
-
- You have left following message for us,<br>
- %s
- <br><br>
-
- You will receive reply on this shortly.<br><br>
-
- Cheers!
- </body>
- </html>
- """ % (self.doc.lead_name, self.doc.remark)
-
- return t
# Add to Calendar
# ===========================================================================
@@ -157,25 +120,6 @@
ev.ref_name = self.doc.name
ev.save(1)
-
-#-----------------Email--------------------------------------------
- def send_emails(self, email=[], subject='', message=''):
- if email:
- sendmail(email, sender = webnotes.user.name, subject = subject , parts = [['text/html', message]])
- msgprint("Mail Sent")
- self.add_in_follow_up(message,'Email')
-
-#-------------------------Checking Sent Mails Details----------------------------------------------
- def send_mail(self):
- if not self.doc.subject or not self.doc.message:
- msgprint("Please enter subject & message in their respective fields.")
- elif not self.doc.email_id:
- msgprint("Recipient not specified. Please add email id of lead in 'Email id' field provided in 'Contact Info' section.")
- raise Exception
- else :
- self.send_emails([self.doc.email_id.strip(' ')], subject = self.doc.subject ,message = self.doc.message)
-
-#---------------------- Add details in follow up table----------------
def add_in_follow_up(self,message,type):
import datetime
child = addchild( self.doc, 'follow_up', 'Communication Log', 1, self.doclist)
diff --git a/erpnext/selling/doctype/lead/lead.txt b/erpnext/selling/doctype/lead/lead.txt
index b6aa839..a467f3a 100644
--- a/erpnext/selling/doctype/lead/lead.txt
+++ b/erpnext/selling/doctype/lead/lead.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-05-15 12:14:52',
+ 'creation': '2012-06-05 20:03:20',
'docstatus': 0,
- 'modified': '2012-05-30 12:43:03',
+ 'modified': '2012-08-02 18:01:53',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -507,23 +507,6 @@
# DocField
{
- 'colour': u'White:FFF',
- 'description': u'Probability of lead converting to customer',
- 'doctype': u'DocField',
- 'fieldname': u'rating',
- 'fieldtype': u'Select',
- 'in_filter': 1,
- 'label': u'Rating',
- 'oldfieldname': u'rating',
- 'oldfieldtype': u'Select',
- 'options': u'\nHot\nWarm\nCold',
- 'permlevel': 0,
- 'reqd': 0,
- 'search_index': 0
- },
-
- # DocField
- {
'default': u'__user',
'doctype': u'DocField',
'fieldname': u'lead_owner',
@@ -694,5 +677,14 @@
'oldfieldtype': u'Small Text',
'permlevel': 1,
'print_hide': 1
+ },
+
+ # DocField
+ {
+ 'doctype': u'DocField',
+ 'fieldname': u'unsubscribed',
+ 'fieldtype': u'Check',
+ 'label': u'Unsubscribed',
+ 'permlevel': 0
}
]
\ No newline at end of file
diff --git a/erpnext/selling/doctype/lead/lead_list.js b/erpnext/selling/doctype/lead/lead_list.js
index ca18dc6..b876d52 100644
--- a/erpnext/selling/doctype/lead/lead_list.js
+++ b/erpnext/selling/doctype/lead/lead_list.js
@@ -4,8 +4,7 @@
this.fields = this.fields.concat([
'tabLead.lead_name',
'tabLead.status',
- 'tabLead.source',
- 'tabLead.rating'
+ 'tabLead.source'
]);
this.stats = this.stats.concat(['status', 'source', 'rating', 'company']);
},
diff --git a/erpnext/selling/doctype/opportunity/opportunity.py b/erpnext/selling/doctype/opportunity/opportunity.py
index 1bcde25..20dcef3 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.py
+++ b/erpnext/selling/doctype/opportunity/opportunity.py
@@ -197,118 +197,7 @@
set(self.doc, 'status', 'Opportunity Lost')
set(self.doc, 'order_lost_reason', arg)
return 'true'
-
-
- # On Send Email
- # ====================================================================================================================
- #def send_emails(self,email,sender,subject,message):
- # if email:
- # sendmail(email,sender,subject=subject or 'Opportunity',parts=[['text/plain',message or self.get_enq_summary()]])
-
- # Prepare HTML Table and Enter Opportunity Items in it, which will be added in enq summary
- # ====================================================================================================================
- def quote_table(self):
- if getlist(self.doclist,'enq_details'):
- header_lbl = ['Item Code','Item Name','Description','Reqd Qty','UOM']
- item_tbl = '''<table style="width:90%%; border:1px solid #AAA; border-collapse:collapse"><tr>'''
- for i in header_lbl:
- item_header = '''<td style="width=20%%; border:1px solid #AAA; border-collapse:collapse;"><b>%s</b></td>''' % i
- item_tbl += item_header
- item_tbl += '''</tr>'''
-
- for d in getlist(self.doclist,'enq_details'):
- item_det = '''
- <tr><td style="width:20%%; border:1px solid #AAA; border-collpase:collapse">%s</td>
- <td style="width:20%%; border:1px solid #AAA; border-collapse:collpase">%s</td>
- <td style="width:20%%; border:1px solid #AAA; border-collapse:collpase">%s</td>
- <td style="width:20%%; border:1px solid #AAA; border-collapse:collpase">%s</td>
- <td style="width:20%%; border:1px solid #AAA; border-collapse:collpase">%s</td></tr>
- ''' % (d.item_code,d.item_name,d.description,d.reqd_qty,d.uom)
- item_tbl += item_det
- item_tbl += '''</table>'''
- return item_tbl
-
- # Prepare HTML Page containing summary of Opportunity, which will be sent as message in E-mail
- # ====================================================================================================================
- def get_enq_summary(self):
-
- t = """
- <html><head></head>
- <body>
- <div style="border:1px solid #AAA; padding:20px; width:100%%">
- <div style="text-align:center;font-size:14px"><b>Request For Quotation</b><br></div>
- <div style="text-align:center;font-size:12px"> %(from_company)s</div>
- <div style="text-align:center; font-size:10px"> %(company_address)s</div>
- <div style="border-bottom:1px solid #AAA; padding:10px"></div>
-
- <div style="padding-top:10px"><b>Quotation Items</b></div>
- <div><table style="width:100%%">
- <tr><td style="width:40%%">Opportunity No:</td> <td style="width:60%%"> %(name)s</td></tr>
- <tr><td style="width:40%%">Opening Date:</td> <td style="width:60%%"> %(transaction_date)s</td></tr>
- <tr><td style="width:40%%">Expected By Date:</td> <td style="width:60%%"> %(expected_date)s</td></tr>
- </table>
- </div>
-
- <div style="padding-top:10px"><b>Terms and Conditions</b></div>
- <div> %(terms_and_conditions)s</div>
-
- <div style="padding-top:10px"><b>Contact Details</b></div>
- <div><table style="width:100%%">
- <tr><td style="width=40%%">Contact Person:</td><td style="width:60%%"> %(contact_person)s</td></tr>
- <tr><td style="width=40%%">Contact No:</td><td style="width:60%%"> %(contact_no)s</td></tr>
- <tr><td style="width=40%%">Email:</td><td style="width:60%%"> %(email)s</td></tr>
- </table></div>
- """ % (self.doc.fields)
-
- t += """<br><div><b>Quotation Items</b><br></div><div style="width:100%%">%s</div>
- <br>
-To login into the system, use link : <div><a href='http://67.205.111.118/v160/login.html' target='_blank'>http://67.205.111.118/v160/login.html</a></div><br><br>
- </div>
- </body>
- </html>
- """ % (self.quote_table())
- return t
-
- #-----------------Email--------------------------------------------
- # ====================================================================================================================
- def send_emails(self, email=[], subject='', message=''):
- if email:
- sender_email= sql("Select email from `tabProfile` where name='%s'"%session['user'])
- if sender_email and sender_email[0][0]:
- attach_list=[]
- for at in getlist(self.doclist,'enquiry_attachment_detail'):
- if at.select_file:
- attach_list.append(at.select_file)
- cc_list=[]
- if self.doc.cc_to:
- for cl in (self.doc.cc_to.split(',')):
- if not validate_email_add(cl.strip(' ')):
- msgprint('error:%s is not a valid email id' % cl.strip(' '))
- raise Exception
- cc_list.append(cl.strip(' '))
- sendmail(cc_list, sender=sender_email[0][0], subject=subject, parts=[['text/html', message]], attach=attach_list)
- sendmail(email, sender=sender_email[0][0], subject=subject, parts=[['text/html', message]], cc=cc_list, attach=attach_list)
- #sendmail(cc_list, sender = sender_email[0][0], subject = subject , parts = [['text/html', message]],attach=attach_list)
- msgprint("Mail has been sent")
- self.add_in_follow_up(message,'Email')
- else:
- msgprint("Please enter your mail id in Profile")
- raise Exception
-
- #-------------------------Checking Sent Mails Details----------------------------------------------
- # ====================================================================================================================
- def sent_mail(self):
- if not self.doc.subject or not self.doc.message:
- msgprint("Please enter subject & message in their respective fields.")
- elif not self.doc.email_id1:
- msgprint("Recipient not specified. Please add email id in 'Send To'.")
- raise Exception
- else :
- if not validate_email_add(self.doc.email_id1.strip(' ')):
- msgprint('error:%s is not a valid email id' % self.doc.email_id1)
- else:
- self.send_emails([self.doc.email_id1.strip(' ')], subject = self.doc.subject ,message = self.doc.message)
-
+
#---------------------- Add details in follow up table----------------
# ====================================================================================================================
def add_in_follow_up(self,message,type):
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index 1e382d1..ac0f378 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -415,7 +415,6 @@
from webnotes.utils.email_lib import sendmail
try:
- #webnotes.msgprint('in send')
sendmail(
recipients=recipient_list,
sender='notifications+email_digest@erpnext.com',
diff --git a/erpnext/setup/doctype/email_settings/email_settings.py b/erpnext/setup/doctype/email_settings/email_settings.py
index 118dba2..cb28657 100644
--- a/erpnext/setup/doctype/email_settings/email_settings.py
+++ b/erpnext/setup/doctype/email_settings/email_settings.py
@@ -24,44 +24,24 @@
self.doc,self.doclist = doc,doclist
def validate(self):
- """
- Checks connectivity to email servers before saving
- """
+ """Checks connectivity to email servers before saving"""
self.validate_outgoing()
self.validate_incoming()
-
def validate_outgoing(self):
- """
- Checks incoming email settings
- """
+ """Checks incoming email settings"""
if self.doc.outgoing_mail_server:
from webnotes.utils import cint
- import _socket
- from webnotes.utils.email_lib.send import EMail
- import smtplib
- out_email = EMail()
- out_email.server = self.doc.outgoing_mail_server.encode('utf-8')
- out_email.port = cint(self.doc.mail_port)
- out_email.use_ssl = self.doc.use_ssl
- try:
- err_msg = "Login Id or Mail Password missing. Please enter and try again."
- if not (self.doc.mail_login and self.doc.mail_password):
- raise AttributeError, err_msg
- out_email.login = self.doc.mail_login.encode('utf-8')
- out_email.password = self.doc.mail_password.encode('utf-8')
- except AttributeError, e:
- webnotes.msgprint(err_msg)
- raise e
+ from webnotes.utils.email_lib.smtp import SMTPServer
+ smtpserver = SMTPServer(login = self.doc.mail_login,
+ password = self.doc.mail_password,
+ server = self.doc.outgoing_mail_server,
+ port = cint(self.doc.mail_port),
+ use_ssl = self.doc.use_ssl
+ )
- # exceptions are handled in smtp_connect
- sess = out_email.smtp_connect()
-
- try:
- sess.quit()
- except:
- pass
-
+ # exceptions are handled in session connect
+ sess = smtpserver.sess
def validate_incoming(self):
"""
diff --git a/erpnext/startup/schedule_handlers.py b/erpnext/startup/schedule_handlers.py
index a828fea..021cb1f 100644
--- a/erpnext/startup/schedule_handlers.py
+++ b/erpnext/startup/schedule_handlers.py
@@ -24,27 +24,26 @@
* get support email
* recurring invoice
"""
- try:
- from support.doctype.support_ticket import get_support_mails
- get_support_mails()
- except Exception, e:
- scheduler.log('get_support_mails')
+ # pull emails
+ from support.doctype.support_ticket import get_support_mails
+ run_fn(get_support_mails)
- try:
- from accounts.doctype.gl_control.gl_control import manage_recurring_invoices
- manage_recurring_invoices()
- except Exception, e:
- scheduler.log('manage_recurring_invoices')
-
+ # run recurring invoices
+ from accounts.doctype.gl_control.gl_control import manage_recurring_invoices
+ run_fn(manage_recurring_invoices)
+ # bulk email
+ from webnotes.utils.email_lib.bulk import flush
+ run_fn(flush)
def execute_daily():
- """email digest"""
- try:
- from setup.doctype.email_digest.email_digest import send
- send()
- except Exception, e:
- scheduler.log('email_digest.send')
+ # email digest
+ from setup.doctype.email_digest.email_digest import send
+ run_fn(send)
+
+ # send bulk emails
+ from webnotes.utils.email_lib.bulk import cleanup
+ run_fn(clear_outbox)
def execute_weekly():
pass
@@ -54,3 +53,9 @@
def execute_hourly():
pass
+
+def run_fn(fn):
+ try:
+ fn()
+ except Exception, e:
+ scheduler.log(fn.func_name)
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 9864fc9..9e00dc1 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -181,27 +181,6 @@
self.doc.is_asset_item = 'No'
raise Exception
- def check_min_inventory_level(self):
- if self.doc.minimum_inventory_level:
- total_qty = sql("select sum(projected_qty) from tabBin where item_code = %s",self.doc.name)
- if flt(total_qty) < flt(self.doc.minimum_inventory_level):
- msgprint("Your minimum inventory level is reached")
- send_to = []
- send = sql("select t1.email from `tabProfile` t1,`tabUserRole` t2 where t2.role IN ('Material Master Manager','Purchase Manager') and t2.parent = t1.name")
- for d in send:
- send_to.append(d[0])
- msg = '''
-Minimum Inventory Level Reached
-
-Item Code: %s
-Item Name: %s
-Minimum Inventory Level: %s
-Total Available Qty: %s
-
-''' % (self.doc.item_code, self.doc.item_name, self.doc.minimum_inventory_level, total_qty)
-
- sendmail(send_to, sender='automail@webnotestech.com', subject='Minimum Inventory Level Reached', parts=[['text/plain', msg]])
-
def get_file_details(self, arg = ''):
file = sql("select file_group, description from tabFile where name = %s", eval(arg)['file_name'], as_dict = 1)
diff --git a/erpnext/utilities/doctype/contact/contact.txt b/erpnext/utilities/doctype/contact/contact.txt
index 135699b..baa2a77 100644
--- a/erpnext/utilities/doctype/contact/contact.txt
+++ b/erpnext/utilities/doctype/contact/contact.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-07-02 19:57:48',
+ 'creation': '2012-07-03 14:22:38',
'docstatus': 0,
- 'modified': '2012-07-03 12:54:52',
+ 'modified': '2012-08-02 13:16:48',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -38,133 +38,12 @@
'parenttype': u'DocType'
},
- # These values are common for all DocPerm
- {
- 'doctype': u'DocPerm',
- 'name': '__common__',
- 'parent': u'Contact',
- 'parentfield': u'permissions',
- 'parenttype': u'DocType',
- 'read': 1
- },
-
# DocType, Contact
{
'doctype': 'DocType',
'name': u'Contact'
},
- # DocPerm
- {
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'System Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'amend': 0,
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Sales Master Manager',
- 'submit': 0,
- 'write': 1
- },
-
- # DocPerm
- {
- 'cancel': 1,
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase Master Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Sales Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Maintenance Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Accounts Manager',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Sales User',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Purchase User',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Maintenance User',
- 'write': 1
- },
-
- # DocPerm
- {
- 'create': 1,
- 'doctype': u'DocPerm',
- 'permlevel': 0,
- 'role': u'Accounts User',
- 'write': 1
- },
-
- # DocPerm
- {
- 'doctype': u'DocPerm',
- 'permlevel': 1,
- 'role': u'All'
- },
-
# DocField
{
'colour': u'White:FFF',
@@ -359,6 +238,15 @@
# DocField
{
'doctype': u'DocField',
+ 'fieldname': u'unsubscribed',
+ 'fieldtype': u'Check',
+ 'label': u'Unsubscribed',
+ 'permlevel': 0
+ },
+
+ # DocField
+ {
+ 'doctype': u'DocField',
'fieldname': u'trash_reason',
'fieldtype': u'Small Text',
'label': u'Trash Reason',
diff --git a/erpnext/website/doctype/blog_subscriber/__init__.py b/erpnext/website/doctype/blog_subscriber/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/website/doctype/blog_subscriber/__init__.py
+++ /dev/null
diff --git a/erpnext/website/doctype/blog_subscriber/blog_subscriber.txt b/erpnext/website/doctype/blog_subscriber/blog_subscriber.txt
deleted file mode 100644
index 1fa8223..0000000
--- a/erpnext/website/doctype/blog_subscriber/blog_subscriber.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-# DocType, Blog Subscriber
-[
-
- # These values are common in all dictionaries
- {
- 'creation': '2012-03-27 14:36:47',
- 'docstatus': 0,
- 'modified': '2012-03-27 14:36:47',
- 'modified_by': u'Administrator',
- 'owner': u'Administrator'
- },
-
- # These values are common for all DocType
- {
- 'colour': u'White:FFF',
- 'doctype': 'DocType',
- 'module': u'Website',
- 'name': '__common__',
- 'section_style': u'Simple',
- 'show_in_menu': 0,
- 'version': 1
- },
-
- # DocType, Blog Subscriber
- {
- 'doctype': 'DocType',
- 'name': u'Blog Subscriber'
- }
-]
\ No newline at end of file
diff --git a/erpnext/website/page/unsubscribe/__init__.py b/erpnext/website/page/unsubscribe/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/website/page/unsubscribe/__init__.py
+++ /dev/null
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.html b/erpnext/website/page/unsubscribe/unsubscribe.html
deleted file mode 100644
index 7b2b68e..0000000
--- a/erpnext/website/page/unsubscribe/unsubscribe.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="layout_wrapper">
- <div class="web-content">
- <h1>Unsubscribe</h1>
- <br>
- <div class="web-main-section">
- <input name="unsubscribe">
- <button class="btn" id="btn-unsubscribe">Unsubscribe</button>
- </div>
- <div class="web-side-section">
- </div>
- <div style="clear: both"></div>
- </div>
-</div>
\ No newline at end of file
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.js b/erpnext/website/page/unsubscribe/unsubscribe.js
deleted file mode 100644
index 9e83020..0000000
--- a/erpnext/website/page/unsubscribe/unsubscribe.js
+++ /dev/null
@@ -1,37 +0,0 @@
-// ERPNext - web based ERP (http://erpnext.com)
-// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-pscript.onload_unsubscribe = function(wrapper) {
- var email = window.location.hash.split('/').splice(-1);
- $(wrapper).find('input[name="unsubscribe"]').val(email)
-
- $('#btn-unsubscribe').click(function() {
- var email = $(wrapper).find('input[name="unsubscribe"]').val();
- if(email) {
- var btn = this;
- wn.call({
- module:'website',
- page:'unsubscribe',
- method:'unsubscribe',
- args:email,
- btn: this,
- callback: function() {
- $(wrapper).find('input[name="unsubscribe"]').val('');
- }
- });
- }
- });
-}
\ No newline at end of file
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.py b/erpnext/website/page/unsubscribe/unsubscribe.py
deleted file mode 100644
index 9985ded..0000000
--- a/erpnext/website/page/unsubscribe/unsubscribe.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import webnotes
-
-@webnotes.whitelist()
-def unsubscribe(arg):
- """unsubscribe from lists"""
- lists = [['Blog Subscriber', 'name']]
- for l in lists:
- webnotes.conn.sql("""delete from `tab%s` where %s=%s""" % (l[0], l[1], '%s'), arg)
-
- webnotes.msgprint('Unsubscribed!')
\ No newline at end of file
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.txt b/erpnext/website/page/unsubscribe/unsubscribe.txt
deleted file mode 100644
index 2cc3b58..0000000
--- a/erpnext/website/page/unsubscribe/unsubscribe.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-# Page, unsubscribe
-[
-
- # These values are common in all dictionaries
- {
- 'creation': '2012-01-27 17:19:02',
- 'docstatus': 0,
- 'modified': '2012-01-27 17:19:02',
- 'modified_by': 'Administrator',
- 'owner': 'Administrator'
- },
-
- # These values are common for all Page
- {
- 'doctype': 'Page',
- 'module': 'Website',
- 'name': '__common__',
- 'page_name': 'unsubscribe',
- 'standard': 'Yes',
- 'title': 'Unsubscribe'
- },
-
- # These values are common for all Page Role
- {
- 'doctype': 'Page Role',
- 'name': '__common__',
- 'parent': 'unsubscribe',
- 'parentfield': 'roles',
- 'parenttype': 'Page',
- 'role': 'Guest'
- },
-
- # Page, unsubscribe
- {
- 'doctype': 'Page',
- 'name': 'unsubscribe'
- },
-
- # Page Role
- {
- 'doctype': 'Page Role'
- }
-]
\ No newline at end of file
diff --git a/erpnext/website/templates/pages/unsubscribed.html b/erpnext/website/templates/pages/unsubscribed.html
new file mode 100644
index 0000000..3dc7df9
--- /dev/null
+++ b/erpnext/website/templates/pages/unsubscribed.html
@@ -0,0 +1,11 @@
+{% extends "html/outer.html" %}
+
+{% block content %}
+<div class="content">
+ <div class="layout-wrapper layout-main">
+ <h3>Unsubscribed</h3>
+ <br>
+ <p><b>{{ webnotes.unsubscribed_email }}</b> has been unsubscribed.</p>
+ </div>
+</div>
+{% endblock %}
\ No newline at end of file