コード例 #1
0
def index(service_key):
    service = obj_or_404(Service.by_key(service_key))
    require.service.view(service)
    q = Event.all().filter_by(service=service)
    result = {'count': q.count()}
    q = q.limit(get_limit())
    q = q.offset(get_offset())
    result['results'] = q
    return jsonify(result, refs=True)
コード例 #2
0
def query_pager(q, route, paginate=True, count=None, transform=lambda x: x, data=None, **kw):
    data = data or {}
    count = count or q.count()
    limit = get_limit()
    offset = get_offset()
    if paginate:
        results = q.offset(offset).limit(limit).all()
    else:
        results = q
    url = url_for(route, _external=True, **kw)
    data.update({
        'count': count,
        'limit': limit,
        'offset': offset,
        'previous': prev_url(url, count, offset, limit),
        'next': next_url(url, count, offset, limit),
        'results': map(transform, results)
    })
    return jsonify(data, refs=True)
コード例 #3
0
def user_index(id):
    require.user_id(id)

    esq = {
        "query": {
            "filtered": {
                "query": {"match_all": {}}, "filter": {}
            }
        },
        "sort": [{"action_at": {"order": "desc"}}],
        "size": get_limit(),
        "from": get_offset(),
        "facets": {"entities": {
            "terms": {"field": "entities"}}
        }
    }

    filters = request.args.getlist('entity')
    if len(filters):
        esq['query']['filtered']['filter']['and'] = []
        for entity_id in filters:
            fq = {"term": {"entities": entity_id}}
            esq['query']['filtered']['filter']['and'].append(fq)
    else:
        esq['query']['filtered']['filter']['or'] = []
        for entity in Entity.all().filter(Entity.user_id == id):
            fq = {"term": {"entities": entity.id}}
            esq['query']['filtered']['filter']['or'].append(fq)

    res = elastic.search_raw(esq, elastic_index, 'frame')
    frame_urns = [r['_id'] for r in res['hits']['hits']]
    q = Frame.all().filter(Frame.urn.in_(frame_urns))
    frames = dict([(f.urn, f) for f in q])
    frames = [frames.get(urn) for urn in frame_urns]
    return query_pager(frames, 'frames.user_index',
                       count=res['hits']['total'],
                       paginate=False,
                       id=id)