예제 #1
0
def requests():
    """
    Get requests or create a new request.
    """

    if request.method == 'GET':
        # retrieve all requests
        requests = map(format_request, query_db(g.db, 'SELECT * FROM request'))
        return json.jsonify(list(requests))

    # check if we need to create a session
    input_data = request.get_json()
    if 'session_id' in input_data:
        # retrieve the existing session
        session_id = input_data['session_id']
        session = query_db(g.db,
                           'SELECT * FROM session WHERE id = ?',
                           (session_id, ),
                           single=True)

        if session is None:
            # need to use a session id for an existing session
            abort(400)

        if session['status'] != 'open':
            # need to use an open session
            abort(400)

    else:
        # create a new session
        session_id = insert_db(g.db, 'INSERT INTO session (status) VALUES (?)',
                               ('open', ))

    # create the request in the database
    request_id = insert_db(
        g.db,
        'INSERT INTO request (session_id, status, input) VALUES (?, ?, ?)',
        (session_id, 'created', input_data['text']))

    g.db.commit()

    # create the background job and update the request
    job = g.queue.enqueue(process_request, request_id)
    g.db.execute(
        'UPDATE request SET status = \'queued\', job_id = ? WHERE id = ?',
        (job.id, request_id))

    g.db.commit()

    # return the initial request data
    return json.jsonify({
        'id': request_id,
        'job_id': job.id,
        'session_id': session_id,
        'status': job.get_status(),
        'input': {
            'text': input_data['text']
        },
        'output': None
    })
예제 #2
0
파일: modules.py 프로젝트: RohitSat/cse5914
def delete_module(mod_id):
    """
    Delete a module.
    """

    # retrieve the module
    module = query_db(g.db,
                      'SELECT * FROM module WHERE id = ?', (mod_id, ),
                      single=True)

    if module is None:
        # module not found
        abort(404)

    # create a cursor so we can group multiple statements into a transaction
    cursor = g.db.cursor()

    # remove the module from any requests
    cursor.execute('UPDATE request SET module_id = NULL WHERE module_id = ?',
                   (mod_id, ))

    # delete the module
    cursor.execute('DELETE FROM module WHERE id = ?', (mod_id, ))

    # commit the transaction
    g.db.commit()

    # return an empty response
    return '', 204
예제 #3
0
def sessions():
    """
    Get sessions.
    """

    # retrieve all modules
    sessions = map(dict, query_db(g.db, 'SELECT * FROM session'))
    return json.jsonify(list(sessions))
예제 #4
0
파일: modules.py 프로젝트: RohitSat/cse5914
def get_module(mod_id):
    """
    Get a module.
    """

    # retrieve the module
    module = query_db(g.db,
                      'SELECT * FROM module WHERE id = ?', (mod_id, ),
                      single=True)

    if module is None:
        # module not found
        abort(404)

    # return the module data
    return json.jsonify(dict(module))
예제 #5
0
def get_request(req_id):
    """
    Get a request.
    """

    # retrieve the request
    request = query_db(g.db,
                       'SELECT * FROM request WHERE id = ?', (req_id, ),
                       single=True)

    if request is None:
        # request not found
        abort(404)

    # return the request data
    return json.jsonify(format_request(request))
예제 #6
0
def get_session(session_id):
    """
    Get a session.
    """

    # retrieve the session
    session = query_db(
        g.db,
        'SELECT * FROM session WHERE id = ?',
        (session_id, ),
        single=True)

    if session is None:
        # session not found
        abort(404)

    # return the module data
    return json.jsonify(dict(session))
예제 #7
0
파일: modules.py 프로젝트: RohitSat/cse5914
def modules():
    """
    Get configured modules.
    """

    if request.method == 'GET':
        # retrieve all modules
        modules = map(dict, query_db(g.db, 'SELECT * FROM module'))
        return json.jsonify(list(modules))

    # create the module in the database
    input_data = request.get_json()
    module_id = insert_db(g.db, 'INSERT INTO module (name, url) VALUES (?, ?)',
                          (input_data['name'], input_data['url']))

    g.db.commit()

    # return the module data
    return json.jsonify({
        'id': module_id,
        'name': input_data['name'],
        'url': input_data['url']
    })