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. """ if filter_spec: filter_spec = json.loads(filter_spec) 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, user_email=current_user.email, ) 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_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( *, common: dict = Depends(common_parameters), include: List[str] = Query([], alias="include[]"), ): """Retrieve a list of all incidents.""" pagination = search_filter_sort_paginate(model="Incident", **common) if include: # only allow two levels for now include_sets = create_pydantic_include(include) include_fields = { "items": {"__all__": include_sets}, "itemsPerPage": ..., "page": ..., "total": ..., } return json.loads(IncidentPagination(**pagination).json(include=include_fields)) return json.loads(IncidentPagination(**pagination).json())
def get_tasks( *, include: List[str] = Query([], alias="include[]"), commons: dict = Depends(common_parameters) ): """ Retrieve all tasks. """ pagination = search_filter_sort_paginate(model="Task", **commons) 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()