def get_teams( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query([], alias="sortBy[]"), descending: List[bool] = Query([], alias="descending[]"), fields: List[str] = Query([], alias="field[]"), ops: List[str] = Query([], alias="op[]"), values: List[str] = Query([], alias="value[]"), ): """ Get all team contacts. """ return search_filter_sort_paginate( db_session=db_session, model="TeamContact", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, )
def get_incident_types( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query([], alias="sortBy[]"), descending: List[bool] = Query([], alias="descending[]"), fields: List[str] = Query([], alias="fields[]"), ops: List[str] = Query([], alias="ops[]"), values: List[str] = Query([], alias="values[]"), ): """ Returns all incident types. """ return search_filter_sort_paginate( db_session=db_session, model="IncidentType", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, )
def get_tag_types( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query(None, alias="sortBy[]"), descending: List[bool] = Query(None, alias="descending[]"), fields: List[str] = Query(None, alias="field[]"), ops: List[str] = Query(None, alias="op[]"), values: List[str] = Query(None, alias="value[]"), ): """ Get all tag types, or only those matching a given search term. """ return search_filter_sort_paginate( db_session=db_session, model="TagType", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, )
def get_tasks( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query([], alias="sortBy[]"), descending: List[bool] = Query([], alias="descending[]"), fields: List[str] = Query([], alias="fields[]"), ops: List[str] = Query([], alias="ops[]"), values: List[str] = Query([], alias="values[]"), ): """ Retrieve all tasks. """ return search_filter_sort_paginate( db_session=db_session, model="Task", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, join_attrs=[ ("incident", "incident"), ("incident_type", "incident"), ("incident_priority", "incident"), ("tags", "tag"), ("creator", "creator"), ("owner", "owner"), ], )
def get_plugins_by_type( plugin_type: str, db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query([], alias="sortBy[]"), descending: List[bool] = Query([], alias="descending[]"), fields: List[str] = Query([], alias="field[]"), ops: List[str] = Query([], alias="op[]"), values: List[str] = Query([], alias="value[]"), ): """ Get all plugins by type. """ return search_filter_sort_paginate( db_session=db_session, model="Plugin", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=["type"], values=[plugin_type], ops=["=="], )
def get_incidents( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query([], alias="sortBy[]"), descending: List[bool] = Query([], alias="descending[]"), fields: List[str] = Query([], alias="fields[]"), ops: List[str] = Query([], alias="ops[]"), values: List[str] = Query([], alias="values[]"), current_user: DispatchUser = Depends(get_current_user), ): """ Retrieve a list of all incidents. """ return search_filter_sort_paginate( db_session=db_session, model="Incident", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, join_attrs=[ ("tag", "tags"), ], user_role=current_user.role, )
def get_service_plugins( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query(None, alias="sortBy[]"), descending: List[bool] = Query(None, alias="descending[]"), fields: List[str] = Query([], alias="fields[]"), ops: List[str] = Query([], alias="ops[]"), values: List[str] = Query([], alias="values[]"), current_user: DispatchUser = Depends(get_current_user), ): """ Retrieve a list of all service_plugins. """ # we want to provide additional protections around restricted service_plugins # Because we want to proactively filter (instead of when the item is returned # we don't use fastapi_permissions acls. return search_filter_sort_paginate( db_session=db_session, model="ServicePlugin", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, )
def get_tasks( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query([], alias="sortBy[]"), descending: List[bool] = Query([], alias="descending[]"), fields: List[str] = Query([], alias="fields[]"), ops: List[str] = Query([], alias="ops[]"), values: List[str] = Query([], alias="values[]"), include: List[str] = Query([], alias="include[]"), ): """ Retrieve all tasks. """ pagination = search_filter_sort_paginate( db_session=db_session, model="Task", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, join_attrs=[ ("incident", "incident"), ("incident_type", "incident"), ("incident_priority", "incident"), ("tags", "tag"), ("creator", "creator"), ("owner", "owner"), ], ) if include: # only allow two levels for now include_sets = create_pydantic_include(include) include_fields = { "items": { "__all__": include_sets }, "itemsPerPage":..., "page":..., "total":..., } return TaskPagination(**pagination).dict(include=include_fields) return TaskPagination(**pagination).dict()
def get_incidents( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query([], alias="sortBy[]"), descending: List[bool] = Query([], alias="descending[]"), fields: List[str] = Query([], alias="fields[]"), ops: List[str] = Query([], alias="ops[]"), values: List[str] = Query([], alias="values[]"), current_user: DispatchUser = Depends(get_current_user), include: List[str] = Query([], alias="include[]"), ): """ Retrieve a list of all incidents. """ pagination = search_filter_sort_paginate( db_session=db_session, model="Incident", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, join_attrs=[ ("tag", "tags"), ], user_role=current_user.role, ) if include: # only allow two levels for now include_sets = create_pydantic_include(include) include_fields = { "items": { "__all__": include_sets }, "itemsPerPage":..., "page":..., "total":..., } return IncidentPagination(**pagination).dict(include=include_fields) return IncidentPagination(**pagination).dict()
def get_incidents( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), sort_by: List[str] = Query(None, alias="sortBy[]"), descending: List[bool] = Query(None, alias="descending[]"), fields: List[str] = Query([], alias="fields[]"), ops: List[str] = Query([], alias="ops[]"), values: List[str] = Query([], alias="values[]"), current_user: DispatchUser = Depends(get_current_user), ): """ Retrieve a list of all incidents. """ # we want to provide additional protections around restricted incidents # Because we want to proactively filter (instead of when the item is returned # we don't use fastapi_permissions acls. if current_user.role != UserRoles.admin: # add a filter for restricted incidents fields.append("visibility") values.append(Visibility.restricted) ops.append("!=") return search_filter_sort_paginate( db_session=db_session, model="Incident", query_str=query_str, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, join_attrs=[("tag", "tags")], )
def get_incidents( db_session: Session = Depends(get_db), page: int = 1, items_per_page: int = Query(5, alias="itemsPerPage"), query_str: str = Query(None, alias="q"), filter_spec: str = Query(None, alias="filter"), sort_by: List[str] = Query([], alias="sortBy[]"), descending: List[bool] = Query([], alias="descending[]"), fields: List[str] = Query([], alias="fields[]"), ops: List[str] = Query([], alias="ops[]"), values: List[str] = Query([], alias="values[]"), current_user: DispatchUser = Depends(get_current_user), include: List[str] = Query([], alias="include[]"), ): """ Retrieve a list of all incidents. """ filter_spec = json.loads(filter_spec) if current_user.role != UserRoles.admin: # add support for filtering restricted incidents based on role if filter_spec: filter_spec.append({ "model": "Incident", "field": "visibility", "op": "!=", "value": Visibility.restricted, }) pagination = search_filter_sort_paginate( db_session=db_session, model="Incident", query_str=query_str, filter_spec=filter_spec, page=page, items_per_page=items_per_page, sort_by=sort_by, descending=descending, fields=fields, values=values, ops=ops, join_attrs=[ ("tag", "tags"), ], user_role=current_user.role, ) if include: # only allow two levels for now include_sets = create_pydantic_include(include) include_fields = { "items": { "__all__": include_sets }, "itemsPerPage":..., "page":..., "total":..., } return IncidentPagination(**pagination).dict(include=include_fields) return IncidentPagination(**pagination).dict()