Changes in email digest
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index 9c395c3..35dcf5b 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -378,8 +378,43 @@
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 @@
# 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
diff --git a/erpnext/setup/doctype/email_digest/email_digest.txt b/erpnext/setup/doctype/email_digest/email_digest.txt
index 34822ed..af50c74 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.txt
+++ b/erpnext/setup/doctype/email_digest/email_digest.txt
@@ -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
},