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":get_url()}) + "
".join(errors)) + return 1, """

Scheduler Failed Events (max {limit}):

+

URL: {url}


{errors}""".format( + limit=limit, url=get_url(), errors="
".join(errors)) + else: + return 0, "

Scheduler didn't encounter any problems.

" if __name__=='__main__': execute()