def expand(entity_id): """ --- get: summary: Expand an entity to get its adjacent entities description: >- Get the property-wise list of entities adjacent to the entity with id `entity_id`. parameters: - in: path name: entity_id required: true schema: type: string - description: properties to filter on in: query name: 'filter:property' schema: type: string - in: query description: number of entities to return per property name: limit schema: type: number responses: '200': description: OK content: application/json: schema: type: object allOf: - $ref: '#/components/schemas/QueryResponse' properties: results: type: array items: $ref: '#/components/schemas/EntityExpand' tags: - Entity """ entity = get_index_entity(entity_id, request.authz.READ) proxy = model.get_proxy(entity) collection_id = entity.get("collection_id") tag_request(collection_id=collection_id) parser = QueryParser(request.args, request.authz, max_limit=MAX_EXPAND_ENTITIES) properties = parser.filters.get("property") results = expand_proxies( [proxy], properties=properties, authz=request.authz, limit=parser.limit, ) result = { "status": "ok", "total": sum(result["count"] for result in results), "results": results, } return jsonify(result)
def expand(profile_id): """ --- get: summary: Expand the profile to get its adjacent entities description: >- Get the property-wise list of entities adjacent to the entities that are part of the profile `profile_id`. parameters: - in: path name: profile_id required: true schema: type: string - description: properties to filter on in: query name: 'filter:property' schema: type: string - in: query description: number of entities to return per property name: limit schema: type: number responses: '200': description: OK content: application/json: schema: type: object allOf: - $ref: '#/components/schemas/QueryResponse' properties: results: type: array items: $ref: '#/components/schemas/EntityExpand' tags: - Profile """ profile = obj_or_404(get_profile(profile_id, authz=request.authz)) require(request.authz.can(profile.get("collection_id"), request.authz.READ)) tag_request(collection_id=profile.get("collection_id")) parser = QueryParser(request.args, request.authz, max_limit=MAX_EXPAND_ENTITIES) properties = parser.filters.get("property") results = expand_proxies( profile.get("proxies"), properties=properties, authz=request.authz, limit=parser.limit, ) result = { "status": "ok", "total": sum(result["count"] for result in results), "results": results, } return jsonify(result)