diff --git a/jobs.py b/jobs.py index 9fb807088d39d13a397fc016ef7b66ac841d4a00..484ecd1a77bd2939e73202c5703711156a4da8e1 100644 --- a/jobs.py +++ b/jobs.py @@ -25,8 +25,11 @@ def cancel_job(job_id): modify('UPDATE jobs SET state = "deleted" WHERE id = ? AND state = "ready"', job_id) modify('UPDATE jobs SET canceled = 1 WHERE id = ?', job_id) -def restart_job(job_id): - modify('UPDATE jobs SET state = "ready" WHERE id = ? AND state = "failed" AND NOT canceled', job_id) +def restart_job(job_id, canceled=False): + if canceled: + modify('UPDATE jobs SET state = "ready", canceled = 0 WHERE id = ? AND state = "failed"', job_id) + else: + modify('UPDATE jobs SET state = "ready" WHERE id = ? AND state = "failed" AND NOT canceled', job_id) @app.route('/internal/jobs/overview') @register_navbar('Jobs', iconlib='fa', icon='suitcase') @@ -65,13 +68,13 @@ def jobs_overview(): @csrf_protect def jobs_action(action, jobid=None): if action == 'clear_failed': - query('UPDATE jobs SET state="deleted" WHERE state = "failed" AND (id = ? OR ? IS NULL)', jobid, jobid) + query('UPDATE jobs SET state = "deleted" WHERE state = "failed" AND (id = ? OR ? IS NULL)', jobid, jobid) elif action == 'retry_failed': - query('UPDATE jobs SET state="ready" WHERE state = "failed" AND (id = ? OR ? IS NULL)', jobid, jobid) + query('UPDATE jobs SET state = "ready", canceled = 0 WHERE state = "failed" AND (id = ? OR ? IS NULL)', jobid, jobid) elif action == 'copy' and jobid: - query("INSERT INTO jobs SELECT NULL, type, priority, queue, 'ready', '', '' , ?, '', NULL, data, '{}' FROM jobs where ID=?;", datetime.now(), jobid) + query("INSERT INTO jobs (type, priority, queue, state, data, time_created) SELECT type, priority, queue, 'ready', data, ? FROM jobs where id = ?", datetime.now(), jobid) elif action == 'delete' and jobid: - query('UPDATE jobs SET state="deleted" WHERE id = ?', jobid) + query('UPDATE jobs SET state = "deleted" WHERE id = ?', jobid) elif action == 'cancel' and jobid: cancel_job(jobid) return redirect(request.values.get('ref', url_for('jobs_overview')))