Exemple #1
0
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)
    })
Exemple #2
0
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
    )