def suggest(dataset): """ Suggest API, emulates Google Refine API. See: http://code.google.com/p/google-refine/wiki/SuggestApi """ dataset = Dataset.by_name(dataset) entities = Entity.all().filter(Entity.invalid != True) # noqa query = request.args.get('prefix', '').strip() entities = entities.filter(Entity.name.ilike('%s%%' % query)) entities = entities.offset(get_offset(field='start')) entities = entities.limit(get_limit(default=20)) matches = [] for entity in entities: matches.append({ 'name': entity.name, 'n:type': { 'id': '/' + dataset.name, 'name': dataset.label }, 'id': entity.id }) return jsonify({ "code": "/api/status/ok", "status": "200 OK", "prefix": query, "result": matches })
def index(): q = entities_query(request.args) q["size"] = get_limit(default=50) q["from"] = get_offset() doc_counts = arg_bool("doc_counts") res = execute_entities_query(request.args, q, doc_counts=doc_counts) return jsonify(res)
def index(): q = entities_query(request.args) q['size'] = get_limit(default=50) q['from'] = get_offset() doc_counts = arg_bool('doc_counts') res = execute_entities_query(request.args, q, doc_counts=doc_counts) return jsonify(res)
def rows(document_id, table_id): document, tabular = get_tabular(document_id, table_id) query = tabular_query(document_id, table_id, request.args) query['size'] = get_limit(default=100) query['from'] = get_offset() return jsonify(execute_tabular_query(document_id, table_id, request.args, query))
def suggest_nodes(): prefix = request.args.get('prefix', '').strip() collection_id = [int(c) for c in request.args.getlist('collection_id')] if len(prefix) < 3 and not len(collection_id): return jsonify({'status': 'ok', 'nodes': []}) resp = queries.suggest_nodes(get_graph(), collection_id, prefix, get_limit(default=20), get_offset()) return jsonify(resp)
def query(): enable_cache(vary_user=True, vary=authz.collections(authz.READ)) query = documents_query(request.args) query['size'] = get_limit(default=100) query['from'] = get_offset() result = execute_documents_query(request.args, query) params = next_params(request.args, result) if params is not None: result['next'] = url_for('search_api.query', **params) return jsonify(result)
def rows(document_id, table_id): document, tabular = get_tabular(document_id, table_id) query = tabular_query(document_id, table_id, request.args) query['size'] = get_limit(default=100) query['from'] = get_offset() result = execute_tabular_query(query) params = next_params(request.args, result) if params is not None: result['next'] = url_for('documents_api.rows', document_id=document_id, table_id=table_id, **params) return jsonify(result)
def records(document_id): etag_cache_keygen() document = get_document(document_id) query = records_query(document.id, request.args) if query is None: return jsonify({ 'status': 'ok', 'message': 'no query' }) query['size'] = get_limit(default=30) query['from'] = get_offset() res = execute_records_query(document.id, request.args, query) return jsonify(res)
def query(): enable_cache(vary_user=True, vary=authz.collections(authz.READ)) query = documents_query(request.args) query["size"] = get_limit(default=100) query["from"] = get_offset() # import json # print json.dumps(query, indent=2) result = execute_documents_query(request.args, query) params = next_params(request.args, result) log_event(request) if params is not None: result["next"] = url_for("search_api.query", **params) return jsonify(result)
def records(document_id): document = get_document(document_id) enable_cache(vary_user=True) query = records_query(document.id, request.args) if query is None: return jsonify({"status": "ok", "message": "no query"}) query["size"] = get_limit(default=30) query["from"] = get_offset() result = execute_records_query(query) params = next_params(request.args, result) if params is not None: result["next"] = url_for("search_api.record", document_id=document_id, **params) return jsonify(result)
def query(): creds = authz.collections(authz.READ), authz.sources(authz.READ) enable_cache(vary_user=True, vary=creds) query = documents_query(request.args) query['size'] = get_limit(default=100) query['from'] = get_offset() result = execute_documents_query(request.args, query) result['alert'] = None if authz.logged_in(): result['alert'] = Alert.exists(request.args, request.auth_role) params = next_params(request.args, result) if params is not None: result['next'] = url_for('search_api.query', **params) return jsonify(result)
def records(document_id): document = get_document(document_id) enable_cache(vary_user=True) query = records_query(document.id, request.args) if query is None: return jsonify({'status': 'ok', 'message': 'no query'}) query['size'] = get_limit(default=30) query['from'] = get_offset() result = execute_records_query(query) params = next_params(request.args, result) if params is not None: result['next'] = url_for('search_api.record', document_id=document_id, **params) return jsonify(result)
def _query(escape=False): ''' everything here should be applicable both to the internal and to the public api ''' creds = authz.collections(authz.READ), authz.sources(authz.READ) enable_cache(vary_user=True, vary=creds) query = documents_query(request.args, escape=escape) query['size'] = get_limit(default=100) query['from'] = get_offset() result = execute_documents_query(request.args, query) params = next_params(request.args, result) if params is not None: result['next'] = url_for('search_api.query', **params) return result
def records(document_id): document = get_document(document_id) enable_cache(vary_user=True) query = records_query(document.id, request.args) if query is None: return jsonify({ 'status': 'ok', 'message': 'no query' }) query['size'] = get_limit(default=30) query['from'] = get_offset() result = execute_records_query(query) params = next_params(request.args, result) if params is not None: result['next'] = url_for('search_api.record', document_id=document_id, **params) return jsonify(result)
def query(): etag_cache_keygen() query = documents_query(request.args) query['size'] = get_limit(default=100) query['from'] = get_offset() return jsonify(execute_documents_query(request.args, query))
def load_nodes(): node_ids = request.args.getlist('id') resp = queries.load_nodes(get_graph(), node_ids, get_limit(default=20), get_offset()) return jsonify(resp)