Changes in email digest

This commit is contained in:
Anand Doshi 2011-12-06 18:51:14 +05:30
parent 41e542ce4d
commit 590448aaef
2 changed files with 100 additions and 7 deletions

View File

@ -378,8 +378,43 @@ class DocType:
webnotes.msgprint('There was a problem in sending your email. Please contact support@erpnext.com')
#webnotes.errprint(webnotes.getTraceback())
def on_update(self):
"""
"""
import webnotes
args = {
'db_name': webnotes.conn.get_value('Control Panel', '', 'account_id'),
'event': 'setup.doctype.email_digest.email_digest.send'
}
from webnotes.utils.scheduler import Scheduler
sch = Scheduler()
sch.connect()
if self.doc.enabled == 1:
# Create scheduler entry
res = sch.conn.sql("""
SELECT * FROM Event
WHERE
db_name = %(db_name)s AND
event = %(event)s
""", args)
if not (res and res[0]):
args['next_execution'] = self.get_next_execution()
sch.conn.sql("""
INSERT INTO Event (db_name, event, `interval`, next_execution, recurring)
VALUES (%(db_name)s, %(event)s, 86400, %(next_execution)s, 1)
""", args)
else:
# delete scheduler entry
sch.clear(args['db_name'], args['event'])
def schedule(self):
def get_next_sending(self):
"""
"""
@ -387,7 +422,65 @@ class DocType:
# Get System TimeZone
import time
from pytz import timezone
server_tz = timezone(time.tzname[0])
import datetime
import webnotes.defs
cp = webnotes.model.doc.Document('Control Panel','Control Panel')
app_tz = timezone(cp.time_zone)
server_tz = timezone(getattr(webnotes.defs, 'system_timezone'))
start_date, end_date = self.get_start_end_dates()
new_date = end_date + datetime.timedelta(days=1)
new_time = datetime.time(hour=6)
naive_dt = datetime.datetime.combine(new_date, new_time)
app_dt = app_tz.localize(naive_dt)
server_dt = server_tz.normalize(app_dt.astimezone(server_tz))
res = {
'app_dt': app_dt.replace(tzinfo=None),
'app_tz': app_tz,
'server_dt': server_dt.replace(tzinfo=None),
'server_tz': server_tz
}
from webnotes.utils import formatdate
str_date = formatdate(str(res['app_dt'].date()))
str_time = res['app_dt'].time().strftime('%I:%M')
self.doc.next_send = str_date + " at " + str_time
return res
def get_next_execution(self):
"""
"""
from datetime import datetime, timedelta
dt_args = self.get_next_sending()
server_dt = dt_args['server_dt']
now_dt = datetime.now(dt_args['server_tz'])
if now_dt.time() <= server_dt.time():
next_date = now_dt.date()
else:
next_date = now_dt.date() + timedelta(days=1)
next_time = server_dt.time()
return datetime.combine(next_date, next_time)
def onload(self):
"""
"""
self.get_next_sending()
def send():
"""
"""
pass

View File

@ -5,14 +5,14 @@
{
'creation': '2011-11-28 13:11:56',
'docstatus': 0,
'modified': '2011-12-05 18:54:27',
'modified': '2011-12-06 18:49:23',
'modified_by': 'Administrator',
'owner': 'Administrator'
},
# These values are common for all DocType
{
'_last_update': '1323083188',
'_last_update': '1323177411',
'autoname': 'Prompt',
'colour': 'White:FFF',
'doctype': 'DocType',
@ -21,7 +21,7 @@
'name': '__common__',
'section_style': 'Simple',
'show_in_menu': 0,
'version': 61
'version': 66
},
# These values are common for all DocField
@ -114,8 +114,8 @@
# DocField
{
'doctype': 'DocField',
'fieldname': 'next_send_datetime',
'fieldtype': 'Text',
'fieldname': 'next_send',
'fieldtype': 'Data',
'label': 'Next email will be sent on:',
'permlevel': 1
},