Exemple #1
0
def do_search():
    # extract query string and query settings
    query = request.args['query']

    # pull out paginate option
    paginate = bool(request.args.get("paginate", True))

    # pull out current page option
    page = int(request.args.get("page", 1))

    res = {"query": query}

    # search for nodes
    try:
        nodes = searcher.search(query)
    except Exception as err:
        nodes = []
        print(err)

    if nodes == 'vague':
        res["message"] = "vague"
        nodes = []

    exported_nodes = [export_node_contents(n) for n in nodes]

    if paginate:
        paginator = Paginator(exported_nodes, page)
        res["results"] = paginator.export_page_items()
        res["pagination"] = {
            "hits": paginator.hits(),
            "limit": paginator.page_limit(),
            "page": paginator.cur_page(),
            "totalPages": paginator.num_pages(),
            "hasNextPage": paginator.has_next_page(),
            "nextPage": paginator.next_page(),
            "hasPrevPage": paginator.has_prev_page(),
            "prevPage": paginator.prev_page()
        }
    else:
        res["results"] = exported_nodes

    # return json result
    return res