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