def abort_task(): """Abort a task.""" id = request.form['id'] username = session['username'] assert id in \ redisconnection.lrange('tasks:' + username, 0, -1), \ 'Task must belong to you.' worker.main.AsyncResult(id).abort() return jsonify(remove='success', id=id)
def get_tasks(): """Get a list of visible tasks for user.""" # sudoer = able to monitor all tasks username = session['username'] if is_sudoer(username): key = 'alltasks' else: key = 'tasks:' + username return key, redisconnection.lrange(key, 0, -1)[::-1]
def get_tasks(): """Get a list of visible tasks for user.""" # sudoer = able to monitor all tasks username = session['username'] if is_sudoer(username): key = 'alltasks' else: key = 'tasks:' + username return redisconnection.lrange(key, 0, -1)[::-1]
def abort_task(): """Abort a task.""" id = request.form['id'] username = session['username'] assert id in \ redisconnection.lrange('tasks:' + username, 0, -1), \ 'Task must belong to you.' worker.main.AsyncResult(id).abort() redis_publish('update', {'taskid': id, 'data': _status(id)}) return jsonify(remove='success', id=id)
def remove_task(): """Revove a task from list of tasks.""" id = request.form['id'] username = session['username'] assert id in \ redisconnection.lrange('tasks:' + username, 0, -1), \ 'Task must belong to you.' redisconnection.lrem('alltasks', id) # not StrictRedis redisconnection.lrem('tasks:' + username, id) # not StrictRedis redisconnection.delete('titles:' + id) redisconnection.delete('params:' + id) redisconnection.delete('restarted:' + id) return jsonify(remove='success', id=id)
def remove_task(): """Revove a task from list of tasks.""" id = request.form['id'] username = session['username'] assert id in \ redisconnection.lrange('tasks:' + username, 0, -1), \ 'Task must belong to you.' redisconnection.lrem('alltasks', 0, id) redisconnection.lrem('tasks:' + username, 0, id) redisconnection.delete('titles:' + id) redisconnection.delete('params:' + id) redisconnection.delete('restarted:' + id) redis_publish('remove', {'taskid': id}) return jsonify(remove='success', id=id)
def restart_task(): """Reastart a task: run a task with params of another task.""" id = request.form['id'] filename = redisconnection.get('titles:' + id) assert filename, 'Task does not exist' assert id in \ redisconnection.lrange('tasks:' + session['username'], 0, -1), \ 'Task must belong to you.' restarted = redisconnection.get('restarted:' + id) assert not restarted, \ 'Task has already been restarted with id ' + restarted params = redisconnection.get('params:' + id) assert params, 'Could not extract the task parameters.' newid = run_task_internal(filename, pickle.loads(params)) redisconnection.set('restarted:' + id, newid) return jsonify(restart='success', id=id, taskid=newid)
def restart_task(): """Reastart a task: run a task with params of another task.""" id = request.form['id'] filename = redisconnection.get('titles:' + id) assert filename, 'Task does not exist' assert id in \ redisconnection.lrange('tasks:' + session['username'], 0, -1), \ 'Task must belong to you.' restarted = redisconnection.get('restarted:' + id) assert not restarted, \ 'Task has already been restarted with id ' + restarted params = redisconnection.get('params:' + id) assert params, 'Could not extract the task parameters.' newid = run_task_internal(filename, json.loads(params)) redisconnection.set('restarted:' + id, newid) redis_publish('update', {'taskid': id, 'data': _status(id)}) return jsonify(restart='success', id=id, taskid=newid)
def is_sudoer(username): """Check if a user is a sudoer.""" return username in redisconnection.lrange('sudoers', 0, -1)