Beispiel #1
0
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,
    )
Beispiel #2
0
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,
    )
Beispiel #3
0
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,
    )
Beispiel #4
0
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"),
        ],
    )
Beispiel #5
0
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=["=="],
    )
Beispiel #6
0
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,
    )
Beispiel #7
0
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,
    )
Beispiel #8
0
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()
Beispiel #9
0
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()
Beispiel #10
0
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")],
    )
Beispiel #11
0
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()