def gconnect():
    # Check the state token
    if request.args.get('state') != login_session['state']:
        return make_json_response('Invalid state parameter.', 401)

    # Get authorization code
    code = request.data

    # Get Google credentials
    credentials = get_credentials(code, CLIENT_SEC_FILE)
    if credentials is None:
        return make_json_response('Failed to upgrade the authorization code.',
                                  401)

    # Check if the credentials are valid and ok
    res = check_credentials(credentials, CLIENT_ID)
    if len(res) > 0:
        return make_json_response(res.message, res.code)

    # Check if the authenticated user is already connected
    gplus_id = credentials.id_token['sub']
    stored_access_token = login_session.get('access_token')
    stored_gplus_id = login_session.get('gplus_id')
    if stored_access_token is not None and gplus_id == stored_gplus_id:
        return make_json_response('Current user is already connected.', 200)

    # Store the access token in the session for later use.
    name, email = get_user_name_and_email(credentials)
    # Check if the actual user name is present
    # If not, use the email address instead
    if len(name.strip()) == 0 or name is None:
        login_session['username'] = email
    else:
        login_session['username'] = name

    login_session['access_token'] = credentials.access_token
    login_session['gplus_id'] = gplus_id
    flash("You are now logged in as %s" % login_session['username'], "success")

    msgs = [("Authorized successfully."),
            ("Access token: {0}".format(login_session['access_token'])),
            ("User name: {0}".format(login_session['username']))]
    log_to_console(msgs)

    return make_json_response('Success', 200)
def get_product_json(id):
    product = session.query(Product).filter_by(id=id).first()
    if not product:
        return make_json_response("Product not found", 404)

    result = [
        product.serialize,
    ]
    return jsonify(Product=result)
def get_category_json(id):
    result = []
    category = session.query(Category).filter_by(id=id).first()
    if not category:
        return make_json_response("Category not found", 404)

    products = session.query(Product).filter_by(category_id=category.id)
    product_list = [p.serialize for p in products]

    result.append(
        dict(id=category.id, name=category.name, products=product_list))

    return jsonify(Category=result)