From 278c64c3619d77038bf207420fb16c02e0c80436 Mon Sep 17 00:00:00 2001 From: Neel Patel Date: Mon, 6 Mar 2017 10:24:43 +0000 Subject: [PATCH] Add missing "Run Now" option for pgAdmin jobs. Fixes #1796 --- .../server_groups/servers/pgagent/__init__.py | 2 +- .../pgagent/templates/pga_job/js/pga_job.js | 48 ++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/__init__.py b/web/pgadmin/browser/server_groups/servers/pgagent/__init__.py index 9acd90671..0b792992a 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/pgagent/__init__.py @@ -121,7 +121,7 @@ class JobView(PGChildNodeView): 'nodes': [{'get': 'nodes'}, {'get': 'nodes'}], 'sql': [{'get': 'sql'}], 'msql': [{'get': 'msql'}, {'get': 'msql'}], - 'run_now': [{'post': 'run_now'}], + 'run_now': [{'put': 'run_now'}], 'classes': [{}, {'get': 'job_classes'}], 'children': [{'get': 'children'}], 'stats': [{'get': 'statistics'}], diff --git a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/js/pga_job.js b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/js/pga_job.js index 2a964bfc9..51f418105 100644 --- a/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/js/pga_job.js +++ b/web/pgadmin/browser/server_groups/servers/pgagent/templates/pga_job/js/pga_job.js @@ -52,6 +52,11 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) { applies: ['object', 'context'], callback: 'show_obj_properties', category: 'create', priority: 4, label: '{{ _('pgAgent Job...') }}', icon: 'wcTabIcon icon-pga_job', data: {action: 'create'} + }, { + name: 'run_now_pga_job', node: 'pga_job', module: this, + applies: ['object', 'context'], callback: 'run_pga_job_now', + priority: 4, label: '{{ _('Run now') }}', data: {action: 'create'}, + icon: 'fa fa-play-circle' }]); }, model: pgBrowser.Node.Model.extend({ @@ -154,7 +159,48 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) { } return null; } - }) + }), + /* Run pgagent job now */ + run_pga_job_now: function(args) { + var input = args || {}, + obj = this, + t = pgBrowser.tree, + i = input.item || t.selected(), + d = i && i.length == 1 ? t.itemData(i) : undefined; + + if (!d) + return false; + + $.ajax({ + url: obj.generate_url(i, 'run_now', d, true), + method:'PUT', + success: function(res) { + // 'pgagent.pga_job' table updated with current time + // to run the job now. + t.unload(i); + }, + error: function(xhr, status, error) { + var error_msg = "Unable to run pgagent job."; + if (xhr.readyState == 0) { + alertify.error('{{ _('Not connected to the server or the connection to the server has been closed.') }}'); + } + else { + if (_.isUndefined(xhr.responseText)) { + alertify.error("{{ _('" + error_msg + "') }}"); + } + else { + var err = $.parseJSON(xhr.responseText); + if (err.success == 0) { + alertify.error("{{ _('" + err.errormsg + "') }}"); + } + } + } + t.unload(i); + } + }); + + return false; + }, }); }