def suggest(): if not 'q' in request.args or not len(request.args.get('q').strip()): raise BadRequest("Missing the query ('q' parameter).") q = db.session.query(EntityProperty) q = q.filter(EntityProperty.name=='name') q = q.filter(EntityProperty.active==True) q = q.filter(EntityProperty.entity_id!=None) q = q.filter(EntityProperty.value.ilike(request.args.get('q') + '%')) if 'project' in request.args: q = q.join(Entity) q = q.join(Project) q = q.filter(Project.slug==request.args.get('project')) pager = Pager(q) data = [] def convert(props): for prop in props: data.append({ 'name': prop.value, '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))
def status(): permissions = {} if authz.logged_in(): for permission in request.account.permissions: permissions[permission.project.slug] = { 'reader': permission.reader, 'editor': permission.editor, 'admin': permission.admin } keys = { 'p': repr(permissions), 'i': request.account.id if authz.logged_in() else None } validate_cache(keys=keys) oauth_providers = {} for name, provider in PROVIDERS.items(): if not isinstance(provider, Stub): oauth_providers[name] = url_for('.login', provider=name) return jsonify({ 'logged_in': authz.logged_in(), 'api_key': request.account.api_key if authz.logged_in() else None, 'account': request.account if request.account else None, 'permissions': permissions, 'oauth': oauth_providers })
def view(slug, name): project = object_or_404(Project.by_slug(slug)) authz.require(authz.project_read(project)) if not project.private: validate_cache(last_modified=project.updated_at) schema = object_or_404(Schema.by_name(project, name)) return jsonify(schema)
def suggest(): if not 'q' in request.args or not len(request.args.get('q').strip()): raise BadRequest("Missing the query ('q' parameter).") q = db.session.query(EntityProperty) q = q.join(Entity) q = q.join(Project) q = q.outerjoin(Permission) q = q.filter(or_(Project.private==False, and_(Permission.reader==True, Permission.account==request.account))) q = q.filter(EntityProperty.name=='name') q = q.filter(EntityProperty.active==True) q = q.filter(EntityProperty.entity_id!=None) q = q.filter(EntityProperty.value_string.ilike(request.args.get('q') + '%')) if 'project' in request.args: q = q.filter(Project.slug==request.args.get('project')) pager = Pager(q) data = [] def convert(props): for prop in props: data.append({ 'name': prop.value, '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))
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))
def graph(slug): project = object_or_404(Project.by_slug(slug)) extractor = GraphExtractor(project_id=project.id) validate_cache(keys=extractor.to_hash()) if extractor.format == 'gexf': return Response(extractor.to_gexf(), mimetype='text/xml') return jsonify(extractor.to_dict())
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'))
def graph(id): entity = object_or_404(Entity.by_id(id)) extractor = GraphExtractor(root_id=entity.id) validate_cache(keys=extractor.to_hash()) if extractor.format == 'gexf': return Response(extractor.to_gexf(), mimetype='text/xml') return jsonify(extractor.to_dict())
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"))
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)
def index(slug): project = object_or_404(Project.by_slug(slug)) validate_cache(last_modified=project.updated_at) query = Schema.all() query = query.filter_by(project=project) pager = Pager(query) conv = lambda es: [schemata.to_rest_index(e) for e in es] return jsonify(pager.to_dict(conv))
def graph(slug): project = object_or_404(Project.by_slug(slug)) authz.require(authz.project_read(project)) extractor = GraphExtractor(project_id=project.id) if not project.private: validate_cache(keys=extractor.to_hash()) if extractor.format == 'gexf': return Response(extractor.to_gexf(), mimetype='text/xml') return jsonify(extractor)
def index(): q = Project.all() q = q.outerjoin(Permission) q = q.filter(or_(Project.private==False, and_(Permission.reader==True, Permission.account==request.account))) q = q.distinct() pager = Pager(q) validate_cache(keys=pager.cache_keys()) return jsonify(pager, index=True)
def graph(slug): project = object_or_404(Project.by_slug(slug)) authz.require(authz.project_read(project)) extractor = GraphExtractor(project_id=project.id) if not project.private: validate_cache(keys=extractor.to_hash()) if extractor.format == 'gexf': return Response(extractor.to_gexf(), mimetype='text/xml') return jsonify(extractor.to_dict())
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)
def index(): alias = aliased(Relation) q = db.session.query(alias) query = filters.for_relations(q, alias) query = query.distinct() pager = Pager(query) validate_cache(keys=pager.cache_keys()) result = pager.to_dict() result['facets'] = facets.for_relations() return jsonify(result, index=True)
def index(): alias = aliased(Entity) q = db.session.query(alias) query = filters.for_entities(q, alias) query = query.distinct() pager = Pager(query) validate_cache(keys=pager.cache_keys()) result = pager.to_dict() result['facets'] = facets.for_entities() return jsonify(result, index=True)
def graph(id): entity = object_or_404(Entity.by_id(id)) authz.require(authz.entity_read(entity)) entity_properties = request.args.getlist('entity_property') extractor = GraphExtractor(root_id=entity.id, entity_properties=entity_properties) validate_cache(keys=extractor.to_hash()) if extractor.format == 'gexf': return Response(extractor.to_gexf(), mimetype='text/xml') return jsonify(extractor)
def index(): q = Project.all() q = q.outerjoin(Permission) q = q.filter( or_( Project.private == False, and_(Permission.reader == True, Permission.account == request.account))) q = q.distinct() pager = Pager(q) validate_cache(keys=pager.cache_keys()) return jsonify(pager, index=True)
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)
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)
def index(): query = File.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')) query = query.distinct() pager = Pager(query) validate_cache(keys=pager.cache_keys()) return jsonify(pager, index=True)
def status(): validate_cache(last_modified=startup_time) return jsonify({ 'service': app_name, 'status': 'ok', 'version': __version__, 'docs': 'http://docs.grano.cc/rest_api.html', 'api_url': url_for('base_api.status'), 'services': { 'projects_index_url': url_for('projects_api.index'), 'entities_index_url': url_for('entities_api.index'), 'relations_index_url': url_for('relations_api.index'), 'sessions_status_url': url_for('sessions_api.status') } })
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))) 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))
def status(): validate_cache(last_modified=startup_time) return jsonify({ 'service': app_name, 'status': 'ok', 'version': app_version, 'docs': 'http://docs.grano.cc/rest_api.html', 'api_url': url_for('base_api.status'), 'services': { 'projects_index_url': url_for('projects_api.index'), 'entities_index_url': url_for('entities_api.index'), 'relations_index_url': url_for('relations_api.index'), 'sessions_status_url': url_for('sessions_api.status') } })
def index(): query = File.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')) query = query.distinct() pager = Pager(query) validate_cache(keys=pager.cache_keys()) return jsonify(pager, index=True)
def index(): query = filter_query(Relation, Relation.all(), request.args) if request.args.get('source'): query = query.filter(Relation.source_id==request.args.getlist('source')[0]) if request.args.get('target'): query = query.filter(Relation.target_id==request.args.getlist('target')[0]) if request.args.get('schema'): schemata = request.args.get('schema').split(',') query = query.join(Schema) query = query.filter(Schema.name.in_(schemata)) pager = Pager(query) validate_cache(keys=pager.cache_keys()) return jsonify(pager, index=True)
def status(): validate_cache(last_modified=startup_time) return jsonify( { "service": app_name, "status": "ok", "version": app_version, "docs": "http://granoproject.org/docs", "api_url": url_for("base_api.status"), "services": { "projects_index_url": url_for("projects_api.index"), "entities_index_url": url_for("entities_api.index"), "relations_index_url": url_for("relations_api.index"), "sessions_status_url": url_for("sessions_api.status"), }, } )
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)
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))) 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))
def index(): query = filter_query(Entity, Entity.all(), request.args) if 'q' in request.args and len(request.args.get('q').strip()): q = '%%%s%%' % request.args.get('q').strip() query = query.join(EntityProperty) query = query.filter(EntityProperty.name=='name') query = query.filter(EntityProperty.value_string.ilike(q)) for schema in request.args.getlist('schema'): if not len(schema.strip()): continue alias = aliased(Schema) query = query.join(alias, Entity.schemata) query = query.filter(alias.name.in_(schema.split(','))) query = query.filter(Entity.same_as==None) query = query.distinct() pager = Pager(query) validate_cache(keys=pager.cache_keys()) return jsonify(pager, index=True)
def status(): permissions = {} if authz.logged_in(): for permission in request.account.permissions: permissions[permission.project.slug] = { 'reader': permission.reader, 'editor': permission.editor, 'admin': permission.admin } keys = { 'p': repr(permissions), 'i': request.account.id if authz.logged_in() else None } validate_cache(keys=keys) return jsonify({ 'logged_in': authz.logged_in(), 'api_key': request.account.api_key if authz.logged_in() else None, 'account': request.account if request.account else None, 'permissions': permissions })
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))
def table(id): file = object_or_404(File.by_id(id)) authz.require(authz.project_read(file.project)) limit = get_limit(10) validate_cache(keys={'id': file.id, 'limit': limit}) return jsonify(files.as_table(file, limit))
def favicon_ico(): validate_cache(last_modified=startup_time) ico_url = app.config.get('FAVICON_URL', 'http://assets.pudo.org/img/favicon.ico') return redirect(ico_url)
def robots_txt(): validate_cache(last_modified=startup_time) res = make_response(ROBOTS) res.headers['Content-Type'] = 'text/plain' return res
def view(slug, name): project = object_or_404(Project.by_slug(slug)) validate_cache(last_modified=project.updated_at) schema = object_or_404(Schema.by_name(project, name)) return jsonify(schemata.to_rest(schema))
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)
def view(slug): project = object_or_404(Project.by_slug(slug)) authz.require(authz.project_read(project)) if not project.private: validate_cache(last_modified=project.updated_at) return jsonify(projects.to_rest(project))
def view(slug): project = object_or_404(Project.by_slug(slug)) validate_cache(last_modified=project.updated_at) return jsonify(projects.to_rest(project))
def robots_txt(): validate_cache(last_modified=startup_time) res = make_response(ROBOTS) res.headers["Content-Type"] = "text/plain" return res
def favicon_ico(): validate_cache(last_modified=startup_time) ico_url = app.config.get("FAVICON_URL", "http://assets.pudo.org/img/favicon.ico") return redirect(ico_url)