Example #1
0
def run():
    if request.method == 'POST':
        file = request.files['code']
        data = {}
        if file:
            data['code'] = file.read().decode('utf-8')
            file.close()
        data['status'] = 'pending'
        program = get_model().create(data)

        tasks.create_clingo_job(program['id'])

        if request.args.get('format', 'json').lower() == 'json':
            return jsonify({'id': program['id']})
        return Response(str(program['id']), mimetype='text/plain')
    return 'POST only'
Example #2
0
def execute_clingo(prog_id):
    model = get_model()
    program = model.read(prog_id)
    program['status'] = 'running'
    model.update(program, prog_id)

    with tempfile.TemporaryDirectory() as tmpdirname:
        programfile = os.path.abspath(os.path.join(tmpdirname, 'code'))
        with open(programfile, 'w') as fh:
            fh.write(program['code'])

        result = subprocess.Popen(['clingo', programfile],
                                  stdout=subprocess.PIPE,
                                  universal_newlines=True)
        (stdout, stderr) = result.communicate()

        program['status'] = 'done'
        program['output'] = stdout
        program['result'] = parse_output(stdout)

        model.update(program, prog_id)
        delete_job(prog_id)
Example #3
0
def view_result(id):
    program = get_model().read(id)
    result = program.get('result')
    result['id'] = id
    return jsonify(result)
Example #4
0
def view_output(id):
    program = get_model().read(id)
    output = program.get('output')
    return Response(output, mimetype='text/plain')
Example #5
0
def view_status(id):
    program = get_model().read(id)
    status = program['status']
    if request.args.get('format', 'json').lower() == 'json':
        return jsonify({'id': id, 'status': status })
    return Response(status, mimetype='text/plain')
Example #6
0
def view(id):
    program = get_model().read(id)
    return jsonify(program)