mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Ensure steps and schedules can be created in empty jobs. Fixes #1878
This commit is contained in:
parent
e6d018c44f
commit
ef0d26c294
@ -219,8 +219,8 @@ class JobScheduleView(PGChildNodeView):
|
||||
res = []
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'nodes.sql']),
|
||||
jscid = jscid,
|
||||
jid = jid
|
||||
jscid=jscid,
|
||||
jid=jid
|
||||
)
|
||||
|
||||
status, result = self.conn.execute_2darray(sql)
|
||||
@ -298,6 +298,7 @@ class JobScheduleView(PGChildNodeView):
|
||||
jid: Job ID
|
||||
"""
|
||||
data = {}
|
||||
if request.args:
|
||||
for k, v in request.args.items():
|
||||
try:
|
||||
data[k] = json.loads(
|
||||
@ -305,6 +306,14 @@ class JobScheduleView(PGChildNodeView):
|
||||
)
|
||||
except ValueError:
|
||||
data[k] = v
|
||||
else:
|
||||
data = json.loads(request.data.decode())
|
||||
# convert python list literal to postgres array literal.
|
||||
data['jscminutes'] = data['jscminutes'].replace("[", "{").replace("]", "}")
|
||||
data['jschours'] = data['jschours'].replace("[", "{").replace("]", "}")
|
||||
data['jscweekdays'] = data['jscweekdays'].replace("[", "{").replace("]", "}")
|
||||
data['jscmonthdays'] = data['jscmonthdays'].replace("[", "{").replace("]", "}")
|
||||
data['jscmonths'] = data['jscmonths'].replace("[", "{").replace("]", "}")
|
||||
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'create.sql']),
|
||||
@ -327,8 +336,8 @@ class JobScheduleView(PGChildNodeView):
|
||||
self.conn.execute_void('END')
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'nodes.sql']),
|
||||
jscid = res,
|
||||
jid = jid
|
||||
jscid=res,
|
||||
jid=jid
|
||||
)
|
||||
status, res = self.conn.execute_2darray(sql)
|
||||
|
||||
@ -357,6 +366,7 @@ class JobScheduleView(PGChildNodeView):
|
||||
jscid: JobSchedule ID
|
||||
"""
|
||||
data = {}
|
||||
if request.args:
|
||||
for k, v in request.args.items():
|
||||
try:
|
||||
data[k] = json.loads(
|
||||
@ -364,10 +374,28 @@ class JobScheduleView(PGChildNodeView):
|
||||
)
|
||||
except ValueError:
|
||||
data[k] = v
|
||||
else:
|
||||
data = json.loads(request.data.decode())
|
||||
# convert python list literal to postgres array literal.
|
||||
if 'jscminutes' in data:
|
||||
data['jscminutes'] = data['jscminutes'].replace("[", "{").replace("]", "}")
|
||||
|
||||
if 'jschours' in data:
|
||||
data['jschours'] = data['jschours'].replace("[", "{").replace("]", "}")
|
||||
|
||||
if 'jscweekdays' in data:
|
||||
data['jscweekdays'] = data['jscweekdays'].replace("[", "{").replace("]", "}")
|
||||
|
||||
if 'jscmonthdays' in data:
|
||||
data['jscmonthdays'] = data['jscmonthdays'].replace("[", "{").replace("]", "}")
|
||||
|
||||
if 'jscmonths' in data:
|
||||
data['jscmonths'] = data['jscmonths'].replace("[", "{").replace("]", "}")
|
||||
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'update.sql']),
|
||||
jid=jid,
|
||||
jscid=jscid,
|
||||
data=data
|
||||
)
|
||||
|
||||
@ -378,8 +406,8 @@ class JobScheduleView(PGChildNodeView):
|
||||
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'nodes.sql']),
|
||||
jscid = jscid,
|
||||
jid = jid
|
||||
jscid=jscid,
|
||||
jid=jid
|
||||
)
|
||||
status, res = self.conn.execute_2darray(sql)
|
||||
|
||||
|
@ -184,7 +184,7 @@ function($, _, S, pgAdmin, moment, pgBrowser, Alertify, Backform) {
|
||||
parent_type: 'pga_job',
|
||||
type: 'pga_schedule',
|
||||
dialogHelp: '{{ url_for('help.static', filename='pgagent_jobs.html') }}',
|
||||
hasSQL: false,
|
||||
hasSQL: true,
|
||||
hasDepends: false,
|
||||
hasStatistics: false,
|
||||
canDrop: function(node) {
|
||||
|
@ -232,8 +232,8 @@ SELECT EXISTS(
|
||||
res = []
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'nodes.sql']),
|
||||
jstid = jstid,
|
||||
jid = jid
|
||||
jstid=jstid,
|
||||
jid=jid
|
||||
)
|
||||
|
||||
status, result = self.conn.execute_2darray(sql)
|
||||
@ -315,6 +315,7 @@ SELECT EXISTS(
|
||||
jid: Job ID
|
||||
"""
|
||||
data = {}
|
||||
if request.args:
|
||||
for k, v in request.args.items():
|
||||
try:
|
||||
data[k] = json.loads(
|
||||
@ -322,6 +323,8 @@ SELECT EXISTS(
|
||||
)
|
||||
except ValueError:
|
||||
data[k] = v
|
||||
else:
|
||||
data = json.loads(request.data.decode())
|
||||
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'create.sql']),
|
||||
@ -337,8 +340,8 @@ SELECT EXISTS(
|
||||
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'nodes.sql']),
|
||||
jstid = res,
|
||||
jid = jid
|
||||
jstid=res,
|
||||
jid=jid
|
||||
)
|
||||
status, res = self.conn.execute_2darray(sql)
|
||||
|
||||
@ -417,8 +420,8 @@ SELECT EXISTS(
|
||||
|
||||
sql = render_template(
|
||||
"/".join([self.template_path, 'nodes.sql']),
|
||||
jstid = jstid,
|
||||
jid = jid
|
||||
jstid=jstid,
|
||||
jid=jid
|
||||
)
|
||||
status, res = self.conn.execute_2darray(sql)
|
||||
|
||||
|
@ -23,7 +23,7 @@ INSERT INTO pgagent.pga_schedule(
|
||||
{{ data.jscmonthdays|qtLiteral }}::boolean[],
|
||||
-- Months
|
||||
{{ data.jscmonths|qtLiteral }}::boolean[]
|
||||
) RETURNING jscid INTO scid;{% if 'jscexceptions' in data %}
|
||||
) RETURNING jscid {% if not jid %}INTO scid;{% endif %}{% if 'jscexceptions' in data %}
|
||||
{% for exc in data.jscexceptions %}
|
||||
|
||||
{{ EXCEPTIONS.INSERT(None, exc) }}{% endfor %}{% endif %}
|
||||
|
@ -1,10 +1,2 @@
|
||||
{% import 'macros/pga_schedule.macros' as SCHEDULE %}
|
||||
DO $$
|
||||
DECLARE
|
||||
jscid integer;
|
||||
BEGIN
|
||||
{{ SCHEDULE.INSERT(jid, data) }}
|
||||
END
|
||||
$$ LANGUAGE 'plpgsql';{% if fetch_id %}
|
||||
|
||||
{{ SCHEDULE.FETCH_CURRENT() }}{% endif %}
|
||||
|
Loading…
Reference in New Issue
Block a user