From e6a35946ec86766429f437a750101d34aa4feb67 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 19 Aug 2016 12:24:01 +0530 Subject: [PATCH] [minor] added option to show failed jobs in background_jobs --- .../page/background_jobs/background_jobs.html | 33 +++++++++++++------ .../page/background_jobs/background_jobs.js | 12 +++++-- .../page/background_jobs/background_jobs.py | 17 +++++++--- .../background_jobs_outer.html | 12 +++++++ 4 files changed, 57 insertions(+), 17 deletions(-) create mode 100644 frappe/core/page/background_jobs/background_jobs_outer.html diff --git a/frappe/core/page/background_jobs/background_jobs.html b/frappe/core/page/background_jobs/background_jobs.html index ad45fb9e75..37ec25cc48 100644 --- a/frappe/core/page/background_jobs/background_jobs.html +++ b/frappe/core/page/background_jobs/background_jobs.html @@ -1,26 +1,39 @@ -
+
{% if jobs.length %} - +
- + - + {% for j in jobs %} - - - + + + {% endfor %}
Queue / WorkerQueue / Worker JobCreatedCreated
{{ j.queue }} - {{ frappe.utils.encode_tags(j.job_name) }}{{ j.creation }}{{ j.queue }} +
+ {{ frappe.utils.encode_tags(j.job_name) }} +
+ {% if j.exc_info %} +
+
{{ frappe.utils.encode_tags(j.exc_info) }}
+
+ {% endif %} +
{{ j.creation }}
+

+ Started + Queued + Failed +

{% else %} -

No pending or failed jobs for this site

+

No pending or current jobs for this site

{% endif %} -

Last refreshed {{ frappe.datetime.now_datetime() }}

+

Last refreshed {{ frappe.datetime.now_datetime() }}

\ No newline at end of file diff --git a/frappe/core/page/background_jobs/background_jobs.js b/frappe/core/page/background_jobs/background_jobs.js index 525e64ad49..458a8ad5ee 100644 --- a/frappe/core/page/background_jobs/background_jobs.js +++ b/frappe/core/page/background_jobs/background_jobs.js @@ -1,9 +1,14 @@ frappe.pages['background_jobs'].on_page_load = function(wrapper) { - frappe.pages.background_jobs.page = frappe.ui.make_app_page({ + var page = frappe.ui.make_app_page({ parent: wrapper, title: 'Background Jobs', single_column: true }); + + $(frappe.render_template('background_jobs_outer')).appendTo(page.body); + page.content = $(page.body).find('.table-area'); + + frappe.pages.background_jobs.page = page; } frappe.pages['background_jobs'].on_page_show = function(wrapper) { @@ -18,10 +23,13 @@ frappe.pages.background_jobs.refresh_jobs = function() { page.called = true; frappe.call({ method: 'frappe.core.page.background_jobs.background_jobs.get_info', + args: { + show_failed: page.body.find('.show-failed').prop('checked') ? 1 : 0 + }, callback: function(r) { page.called = false; page.body.find('.list-jobs').remove(); - $(frappe.render_template('background_jobs', {jobs:r.message || []})).appendTo(page.body); + $(frappe.render_template('background_jobs', {jobs:r.message || []})).appendTo(page.content); if(frappe.get_route()[0]==='background_jobs') { frappe.background_jobs_timeout = setTimeout(frappe.pages.background_jobs.refresh_jobs, 2000); diff --git a/frappe/core/page/background_jobs/background_jobs.py b/frappe/core/page/background_jobs/background_jobs.py index 27c2b3b6fa..bd1abc73c0 100644 --- a/frappe/core/page/background_jobs/background_jobs.py +++ b/frappe/core/page/background_jobs/background_jobs.py @@ -6,7 +6,7 @@ import frappe from rq import Queue, Worker from frappe.utils.background_jobs import get_redis_conn -from frappe.utils import format_datetime +from frappe.utils import format_datetime, cint colors = { 'queued': 'orange', @@ -15,14 +15,14 @@ colors = { } @frappe.whitelist() -def get_info(): +def get_info(show_failed=False): conn = get_redis_conn() queues = Queue.all(conn) workers = Worker.all(conn) jobs = [] def add_job(j, name): - if j.kwargs.get('site')==frappe.local.site: + if j.kwargs.get('site')==frappe.local.site or True: jobs.append({ 'job_name': j.kwargs.get('kwargs', {}).get('playbook_method') \ or str(j.kwargs.get('job_name')), @@ -30,6 +30,8 @@ def get_info(): 'creation': format_datetime(j.created_at), 'color': colors[j.status] }) + if j.exc_info: + jobs[-1]['exc_info'] = j.exc_info for w in workers: j = w.get_current_job() @@ -38,7 +40,12 @@ def get_info(): for q in queues: if q.name != 'failed': - for j in q.get_jobs(): - add_job(j, q.name) + for j in q.get_jobs(): add_job(j, q.name) + + if cint(show_failed): + for q in queues: + if q.name == 'failed': + for j in q.get_jobs()[:10]: add_job(j, q.name) + return jobs \ No newline at end of file diff --git a/frappe/core/page/background_jobs/background_jobs_outer.html b/frappe/core/page/background_jobs/background_jobs_outer.html new file mode 100644 index 0000000000..4da4498304 --- /dev/null +++ b/frappe/core/page/background_jobs/background_jobs_outer.html @@ -0,0 +1,12 @@ +
+

+

+ +
+

+
+ +
+
\ No newline at end of file