diff --git a/webnotes/profile.py b/webnotes/profile.py index e41d7d74d4..0393251a37 100644 --- a/webnotes/profile.py +++ b/webnotes/profile.py @@ -160,7 +160,7 @@ def get_user_fullname(user): fullname = webnotes.conn.sql("SELECT CONCAT_WS(' ', first_name, last_name) FROM `tabProfile` WHERE name=%s", user) return fullname and fullname[0][0] or '' -def get_system_managers(): +def get_system_managers(only_name=False): """returns all system manager's profile details""" import email.utils system_managers = webnotes.conn.sql("""select distinct name, @@ -171,7 +171,10 @@ def get_system_managers(): and exists (select * from tabUserRole ur where ur.parent = p.name and ur.role="System Manager")""", as_dict=True) - return [email.utils.formataddr((p.fullname, p.name)) for p in system_managers] + if only_name: + return [p.name for p in system_managers] + else: + return [email.utils.formataddr((p.fullname, p.name)) for p in system_managers] def add_role(profile, role): profile_wrapper = webnotes.bean("Profile", profile) diff --git a/webnotes/utils/scheduler.py b/webnotes/utils/scheduler.py index 26be35eba6..30e207a19a 100644 --- a/webnotes/utils/scheduler.py +++ b/webnotes/utils/scheduler.py @@ -104,22 +104,31 @@ def log(method, message=None): webnotes.conn.commit() return message - -def report_errors(): - from webnotes.utils.email_lib import sendmail_to_system_managers - from webnotes.utils import get_url - errors = [("""
Time: %(modified)s
-%(error)s""" % d) for d in webnotes.conn.sql("""select modified, error
- from `tabScheduler Log` where DATEDIFF(NOW(), modified) < 1
- and error not like '%%[Errno 110] Connection timed out%%'
- limit 10""", as_dict=True)]
+def get_errors(from_date, to_date, limit):
+ errors = webnotes.conn.sql("""select modified, method, error from `tabScheduler Log`
+ where date(modified) between %s and %s
+ and error not like '%%[Errno 110] Connection timed out%%'
+ order by modified limit %s""", (from_date, to_date, limit), as_dict=True)
+ return ["""Time: {modified}
Method: {method}\n{error}""".format(**e)
+ for e in errors]
+def get_error_report(from_date=None, to_date=None, limit=10):
+ from webnotes.utils import get_url, now_datetime, add_days
+
+ if not from_date:
+ from_date = add_days(now_datetime().date(), -1)
+ if not to_date:
+ to_date = add_days(now_datetime().date(), -1)
+
+ errors = get_errors(from_date, to_date, limit)
+
if errors:
- sendmail_to_system_managers("ERPNext Scheduler Failure Report", ("""
- Dear System Managers,
-Reporting ERPNext failed scheduler events for the day (max 10):
-URL: %(url)s
URL: {url}
Scheduler didn't encounter any problems.
" if __name__=='__main__': execute()