def get_right(name: str): """ HTTP `GET`/`HEAD` route for a single right resource. Args: name (str): Name of the right. Raises: ManagerGetError: When the selected right does not exists. Notes: Calling the route over HTTP HEAD method will result in an empty body. Returns: GetSingleResponse: Which includes the json data of a BaseRight. """ right_manager: RightManager = RightManager(right_tree) try: right = right_manager.get(name) except ManagerGetError as err: return abort(404, err.message) api_response = GetSingleResponse(BaseRight.to_dict(right), url=request.url, model=Model('Right'), body=request.method == 'HEAD') return api_response.make_response()
def get_objects(params: CollectionParameters, request_user: UserModel): manager = ObjectManager(database_manager=current_app.database_manager) view = params.optional.get('view', 'native') if _fetch_only_active_objs(): if isinstance(params.filter, dict): filter_ = params.filter params.filter = [{'$match': filter_}] params.filter.append({'$match': {'active': {"$eq": True}}}) elif isinstance(params.filter, list): params.filter.append({'$match': {'active': {"$eq": True}}}) try: iteration_result: IterationResult[CmdbObject] = manager.iterate( filter=params.filter, limit=params.limit, skip=params.skip, sort=params.sort, order=params.order, user=request_user, permission=AccessControlPermission.READ) if view == 'native': object_list: List[dict] = [ object_.__dict__ for object_ in iteration_result.results ] api_response = GetMultiResponse(object_list, total=iteration_result.total, params=params, url=request.url, model=CmdbObject.MODEL, body=request.method == 'HEAD') elif view == 'render': rendered_list = RenderList( object_list=iteration_result.results, request_user=request_user, database_manager=current_app.database_manager, object_manager=object_manager, ref_render=True).render_result_list(raw=True) api_response = GetMultiResponse(rendered_list, total=iteration_result.total, params=params, url=request.url, model=Model('RenderResult'), body=request.method == 'HEAD') else: return abort(401, 'No possible view parameter') except ManagerIterationError as err: return abort(400, err.message) except ManagerGetError as err: return abort(404, err.message) return api_response.make_response()
def get_rights(params: CollectionParameters): """ HTTP `GET`/`HEAD` route for getting a iterable collection of resources. Args: params (CollectionParameters): Passed parameters over the http query string Returns: GetMultiResponse: Which includes a IterationResult of the BaseRight. Notes: Calling the route over HTTP HEAD method will result in an empty body. Raises: ManagerIterationError: If the collection could not be iterated. ManagerGetError: If the collection/resources could not be found. """ right_manager = RightManager(right_tree) body = request.method == 'HEAD' try: if params.optional['view'] == 'tree': api_response = GetMultiResponse( right_manager.tree_to_json(right_tree), total=len(right_tree), params=params, url=request.url, model='Right-Tree', body=body) return api_response.make_response(pagination=False) else: iteration_result: IterationResult[ BaseRight] = right_manager.iterate(filter=params.filter, limit=params.limit, skip=params.skip, sort=params.sort, order=params.order) rights = [ BaseRight.to_dict(type) for type in iteration_result.results ] api_response = GetMultiResponse(rights, total=iteration_result.total, params=params, url=request.url, model=Model('Right'), body=request.method == 'HEAD') return api_response.make_response() except ManagerIterationError as err: return abort(400, err.message) except ManagerGetError as err: return abort(404, err.message)
def get_levels(): """ HTTP `GET`/`HEAD` route for a static collection of levels. Returns: GetSingleResponse: Which includes a levels as enum. Notes: Calling the route over HTTP HEAD method will result in an empty body. """ api_response = GetSingleResponse(_nameToLevel, url=request.url, model=Model('Security-Level'), body=request.method == 'HEAD') return api_response.make_response()