コード例 #1
0
ファイル: entities_api.py プロジェクト: 01-/grano
def suggest():
    if 'q' not in request.args or not len(request.args.get('q').strip()):
        raise BadRequest("Missing the query ('q' parameter).")

    q = db.session.query(Property)
    q = q.join(Entity)
    q = q.filter(Entity.project_id.in_(authz.permissions().get('reader')))
    q = q.filter(Property.name == 'name')
    q = q.filter(Property.active == True) # noqa
    q = q.filter(Property.entity_id != None) # noqa
    q = q.filter(Property.value_string.ilike(request.args.get('q') + '%'))
    if 'project' in request.args:
        q = q.join(Project)
        q = q.filter(Project.slug == request.args.get('project'))
    if 'exclude' in request.args:
        ents = request.args.getlist('exclude')
        q = q.filter(not_(Property.entity_id.in_(ents)))
    q = q.distinct()
    pager = Pager(q)

    data = []

    def convert(props):
        for prop in props:
            data.append({
                'properties': {
                    'name': prop.to_dict_index(),
                },
                'id': prop.entity_id,
                'api_url': url_for('entities_api.view', id=prop.entity_id)
            })
        return data

    validate_cache(keys='#'.join([d['name'] for d in data]))
    return jsonify(pager.to_dict(results_converter=convert))
コード例 #2
0
def index(slug):
    project = object_or_404(Project.by_slug(slug))
    authz.require(authz.project_manage(project))
    query = Permission.all()
    query = query.filter_by(project=project)
    pager = Pager(query, slug=slug)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=True)
コード例 #3
0
ファイル: permissions_api.py プロジェクト: 01-/grano
def index(slug):
    project = object_or_404(Project.by_slug(slug))
    authz.require(authz.project_manage(project))
    query = Permission.all()
    query = query.filter_by(project=project)
    pager = Pager(query, slug=slug)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=True)
コード例 #4
0
ファイル: relations_api.py プロジェクト: 01-/grano
def index():
    alias = aliased(Relation)
    q = db.session.query(alias)
    query = filters.for_relations(q, alias)
    query = sorters.for_entities(query, alias)
    pager = Pager(query)
    validate_cache(keys=pager.cache_keys())
    result = pager.to_dict()
    result['facets'] = facets.for_relations()
    return jsonify(result, index=True)
コード例 #5
0
def index():
    alias = aliased(Entity)
    query = db.session.query(alias)
    query = filters.for_entities(query, alias)
    query = sorters.for_entities(query, alias)
    pager = Pager(query)
    validate_cache(keys=pager.cache_keys())
    result = pager.to_dict()
    result['facets'] = facets.for_entities()
    return jsonify(result, index=True)
コード例 #6
0
def _index(query, obj):
    authz.require(authz.project_read(obj.project))
    active_only = arg_bool('active', default=True)
    if active_only:
        query = query.filter_by(active=True)

    if 'name' in request.args:
        query = query.filter_by(name=request.args.get('name'))

    query = query.order_by(Property.created_at.desc())
    pager = Pager(query, obj_id=obj.id)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=False)
コード例 #7
0
ファイル: log_entries_api.py プロジェクト: 01-/grano
def index(pipeline_id):
    pipeline = object_or_404(Pipeline.by_id(pipeline_id))
    authz.require(authz.project_read(pipeline.project))

    query = LogEntry.all()
    query = query.filter(LogEntry.pipeline == pipeline)

    if request.args.get('level'):
        query = query.filter(LogEntry.level == request.args.get('level'))

    pager = Pager(query)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=True)
コード例 #8
0
def index(pipeline_id):
    pipeline = object_or_404(Pipeline.by_id(pipeline_id))
    authz.require(authz.project_read(pipeline.project))

    query = LogEntry.all()
    query = query.filter(LogEntry.pipeline == pipeline)

    if request.args.get('level'):
        query = query.filter(LogEntry.level == request.args.get('level'))

    pager = Pager(query)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=True)
コード例 #9
0
ファイル: properties_api.py プロジェクト: 01-/grano
def _index(query, obj):
    authz.require(authz.project_read(obj.project))
    active_only = arg_bool('active', default=True)
    if active_only:
        query = query.filter_by(active=True)

    if 'name' in request.args:
        query = query.filter_by(name=request.args.get('name'))

    query = query.order_by(Property.created_at.desc())
    pager = Pager(query, obj_id=obj.id)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=False)
コード例 #10
0
ファイル: files_api.py プロジェクト: 01-/grano
def index():
    query = File.all()
    query = query.join(Project)
    query = query.outerjoin(Permission)
    query = query.filter(or_(Project.private == False, # noqa
        and_(Permission.reader == True, # noqa
             Permission.account == request.account)))

    if request.args.get('project'):
        query = query.filter(Project.slug == request.args.get('project'))

    query = query.distinct()
    pager = Pager(query)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=True)
コード例 #11
0
def index(card_id):
    authz.require(authz.logged_in())
    card = obj_or_404(Card.by_id(card_id))
    references = db.session.query(Reference)
    references = references.filter(Reference.card == card)
    pager = Pager(references, card_id=card_id)
    return jsonify(pager, index=True)
コード例 #12
0
def index(parent_id):
    authz.require(authz.logged_in())
    card = obj_or_404(Card.by_id(parent_id))
    links = db.session.query(Link)
    links = links.filter(Link.parent == card)
    links = links.order_by(Link.offset.asc())
    pager = Pager(links, parent_id=parent_id)
    return jsonify(pager, index=True)
コード例 #13
0
def index(slug):
    project = object_or_404(Project.by_slug(slug))
    authz.require(authz.project_read(project))
    validate_cache(last_modified=project.updated_at)
    query = Schema.all()
    query = query.filter_by(project=project)
    pager = Pager(query, slug=slug)
    return jsonify(pager, index=not arg_bool('full'))
コード例 #14
0
def index():
    query = File.all()
    query = query.join(Project)
    query = query.outerjoin(Permission)
    query = query.filter(
        or_(
            Project.private == False,  # noqa
            and_(
                Permission.reader == True,  # noqa
                Permission.account == request.account)))

    if request.args.get('project'):
        query = query.filter(Project.slug == request.args.get('project'))

    query = query.distinct()
    pager = Pager(query)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=True)
コード例 #15
0
ファイル: pipelines_api.py プロジェクト: 01-/grano
def index():
    query = Pipeline.all()
    query = query.join(Project)
    query = query.outerjoin(Permission)
    query = query.filter(or_(Project.private==False,
        and_(Permission.reader==True, Permission.account==request.account)))

    if request.args.get('project'):
        query = query.filter(Project.slug==request.args.get('project'))

    if request.args.get('operation'):
        query = query.filter(Pipeline.operation == request.args.get('operation'))

    query = query.order_by(Pipeline.updated_at.desc())
    query = query.distinct()

    pager = Pager(query)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=True)
コード例 #16
0
def index():
    authz.require(authz.logged_in())
    cards = db.session.query(Card)
    if 'category' in request.args:
        cards = cards.filter(Card.category == request.args.get('category'))

    # TODO: find a better solution
    cards = cards.filter(Card.title != '')
    cards = cards.order_by(Card.created_at.desc())

    pager = Pager(cards)
    return jsonify(pager, index=True)
コード例 #17
0
ファイル: accounts_api.py プロジェクト: 01-/grano
def suggest():
    authz.require(authz.logged_in())
    query = request.args.get('q', '') + '%'
    q = db.session.query(Account)
    q = q.filter(or_(Account.full_name.ilike(query),
                     Account.login.ilike(query),
                     Account.email.ilike(query)))
    excluded = request.args.getlist('exclude')
    if len(excluded):
        q = q.filter(not_(Account.id.in_(excluded)))
    pager = Pager(q)

    def convert(accounts):
        data = []
        for account in accounts:
            data.append({
                'display_name': account.display_name,
                'id': account.id
            })
        return data

    validate_cache(keys='#'.join([d.display_name for d in pager]))
    return jsonify(pager.to_dict(results_converter=convert))
コード例 #18
0
def suggest():
    authz.require(authz.logged_in())
    query = request.args.get('q', '') + '%'
    q = db.session.query(Account)
    q = q.filter(
        or_(Account.full_name.ilike(query), Account.login.ilike(query),
            Account.email.ilike(query)))
    excluded = request.args.getlist('exclude')
    if len(excluded):
        q = q.filter(not_(Account.id.in_(excluded)))
    pager = Pager(q)

    def convert(accounts):
        data = []
        for account in accounts:
            data.append({
                'display_name': account.display_name,
                'id': account.id
            })
        return data

    validate_cache(keys='#'.join([d.display_name for d in pager]))
    return jsonify(pager.to_dict(results_converter=convert))
コード例 #19
0
def index():
    query = Pipeline.all()
    query = query.join(Project)
    query = query.outerjoin(Permission)
    query = query.filter(
        or_(
            Project.private == False,
            and_(Permission.reader == True,
                 Permission.account == request.account)))

    if request.args.get('project'):
        query = query.filter(Project.slug == request.args.get('project'))

    if request.args.get('operation'):
        query = query.filter(
            Pipeline.operation == request.args.get('operation'))

    query = query.order_by(Pipeline.updated_at.desc())
    query = query.distinct()

    pager = Pager(query)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=True)
コード例 #20
0
def suggest():
    if 'q' not in request.args or not len(request.args.get('q').strip()):
        raise BadRequest("Missing the query ('q' parameter).")

    q = db.session.query(Property)
    q = q.join(Entity)
    q = q.filter(Entity.project_id.in_(authz.permissions().get('reader')))
    q = q.filter(Property.name == 'name')
    q = q.filter(Property.active == True)  # noqa
    q = q.filter(Property.entity_id != None)  # noqa
    q = q.filter(Property.value_string.ilike(request.args.get('q') + '%'))
    if 'project' in request.args:
        q = q.join(Project)
        q = q.filter(Project.slug == request.args.get('project'))
    if 'exclude' in request.args:
        ents = request.args.getlist('exclude')
        q = q.filter(not_(Property.entity_id.in_(ents)))
    q = q.distinct()
    pager = Pager(q)

    data = []

    def convert(props):
        for prop in props:
            data.append({
                'properties': {
                    'name': prop.to_dict_index(),
                },
                'id':
                prop.entity_id,
                'api_url':
                url_for('entities_api.view', id=prop.entity_id)
            })
        return data

    validate_cache(keys='#'.join([d['name'] for d in data]))
    return jsonify(pager.to_dict(results_converter=convert))
コード例 #21
0
def make_facets(parent_alias, filter_func, parser_func):
    """ Return a set of facets based on the current query string. This
    will also consider filters set for the query, i.e. only show facets
    that match the current set of filters. """
    facets = {}
    for facet in request.args.getlist('facet'):
        parent_obj = parent_alias()
        q = db.session.query()
        facet_count = func.count(parent_obj.id)
        q = q.add_columns(facet_count)
        q = q.order_by(facet_count.desc())
        q = filter_func(q, parent_obj)
        q = parser_func(parent_obj, facet, facet, q)
        facets[facet] = Pager(q,
                              name='facet_%s' % facet,
                              results_converter=results_process)
    return facets
コード例 #22
0
def search():
    authz.require(authz.logged_in())
    query = cards_query(request.args)
    pager = Pager(search_cards(query))
    return jsonify(pager, index=True)
コード例 #23
0
def index():
    q = Project.all()
    q = q.filter(Project.id.in_(authz.permissions().get('reader')))
    pager = Pager(q)
    validate_cache(keys=pager.cache_keys())
    return jsonify(pager, index=True)