def api_run_query(): if g.user is None: return "Authentication required", 401 text = request.form['text'] query = Query.get_by_id(request.form['query_id']) last_query_rev = query.latest_rev if last_query_rev: last_query_run = QueryRun.get_latest_run(last_query_rev.id) if last_query_run: result = worker.run_query.AsyncResult(last_query_run.task_id) if not result.ready(): result.revoke(terminate=True) last_query_run.status = QueryRun.STATUS_SUPERSEDED last_query_run.save() query_rev = QueryRevision(query_id=query.id, text=text) query_rev.save_new() query.latest_rev = query_rev query.save() query_run = QueryRun() query_run.query_rev = query_rev query_run.status = QueryRun.STATUS_QUEUED query_run.save_new() query_run.task_id = worker.run_query.delay(query_run.id).task_id query_run.save() return json.dumps({ 'output_url': url_for('api_query_output', user_id=g.user.id, run_id=query_run.id) })
def api_set_meta(): if g.user is None: return "Authentication required", 401 query = Query.get_by_id(request.form['query_id']) if 'title' in request.form: query.title = request.form['title'] query.save() return json.dumps({'id': query.id})
def query_show(query_id): query = Query.get_by_id(query_id) can_edit = g.user is not None and g.user.id == query.user_id jsvars = { 'query_id': query.id, 'can_edit': can_edit } # Check if there's a run? query_run = QueryRun.get_latest_run(query.latest_rev_id) if query_run is not None: jsvars['output_url'] = url_for('api_query_output', user_id=query.user_id, run_id=query_run.id) return render_template( "query/view.html", user=g.user, query=query, jsvars=jsvars )