def get_incident_costs( 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[]"), ): """ Get all incident costs, or only those matching a given search term. """ return search_filter_sort_paginate( db_session=db_session, model="IncidentCost", 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_organizations( 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[]"), ): """ Get all organizations. """ return search_filter_sort_paginate( db_session=db_session, model="Organization", 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_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="fields[]"), ops: List[str] = Query([], alias="ops[]"), values: List[str] = Query([], alias="values[]"), ): """ 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_users(*, organization: OrganizationSlug, common: dict = Depends(common_parameters)): """Get all users.""" common["filter_spec"] = { "and": [{ "model": "Organization", "op": "==", "field": "name", "value": organization }] } items = search_filter_sort_paginate(model="DispatchUser", **common) # filtered users return { "total": items["total"], "items": [{ "id": u.id, "email": u.email, "projects": u.projects, "role": u.get_organization_role(organization), } for u in items["items"]], }
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[]"), current_user: DispatchUser = Depends(get_current_user), ): """ 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, user_role=current_user.role, )
def get_plugins_by_type(plugin_type: str, common: dict = Depends(common_parameters)): """ Get all plugins by type. """ common["filter_spec"] = [{ "field": "type", "op": "==", "value": plugin_type }] return search_filter_sort_paginate(model="Plugin", **common)
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()
def get_feedback_entries(*, commons: dict = Depends(common_parameters)): """Get all feedback entries, or only those matching a given search term.""" return search_filter_sort_paginate(model="Feedback", **commons)
def get_services(*, common: dict = Depends(common_parameters)): """Retrieve all services.""" return search_filter_sort_paginate(model="Service", **common)
def get_incident_cost_types(*, common: dict = Depends(common_parameters)): """ Get all incident cost types, or only those matching a given search term. """ return search_filter_sort_paginate(model="IncidentCostType", **common)
def get_terms(*, common: dict = Depends(common_parameters)): """ Retrieve all terms. """ return search_filter_sort_paginate(model="Term", **common)
def get_incident_types(*, common: dict = Depends(common_parameters)): """Returns all incident types.""" return search_filter_sort_paginate(model="IncidentType", **common)
def get_notifications(*, common: dict = Depends(common_parameters)): """ Get all notifications, or only those matching a given search term. """ return search_filter_sort_paginate(model="Notification", **common)
def get_incident_priorities(*, common: dict = Depends(common_parameters)): """ Returns all incident priorities. """ return search_filter_sort_paginate(model="IncidentPriority", **common)
def get_tags(*, common: dict = Depends(common_parameters)): """Get all tags, or only those matching a given search term.""" return search_filter_sort_paginate(model="Tag", **common)
def get_users(*, common: dict = Depends(common_parameters)): """ Get all users. """ return search_filter_sort_paginate(model="DispatchUser", **common)
def get_documents(*, common: dict = Depends(common_parameters)): """ Get all documents. """ return search_filter_sort_paginate(model="Document", **common)
def get_definitions(*, common: dict = Depends(common_parameters)): """ Get all definitions. """ return search_filter_sort_paginate(model="Definition", **common)
def get_plugins(*, common: dict = Depends(common_parameters)): """ Get all plugins. """ return search_filter_sort_paginate(model="Plugin", **common)
def get_individuals(*, common: dict = Depends(common_parameters)): """ Retrieve individual contacts. """ return search_filter_sort_paginate(model="IndividualContact", **common)
def get_source_data_formats(*, common: dict = Depends(common_parameters)): """Get all source_data_format data formats, or only those matching a given search term.""" return search_filter_sort_paginate(model="SourceDataFormat", **common)
def get_workflows(*, common: dict = Depends(common_parameters)): """ Get all workflows. """ return search_filter_sort_paginate(model="Workflow", **common)
def get_filters(*, common: dict = Depends(common_parameters)): """ Retrieve filters. """ return search_filter_sort_paginate(model="SearchFilter", **common)
def get_source_types(*, common: dict = Depends(common_parameters)): """Get all source types, or only those matching a given search term.""" return search_filter_sort_paginate(model="SourceType", **common)
def get_teams(*, common: dict = Depends(common_parameters)): """Get all team contacts.""" return search_filter_sort_paginate(model="TeamContact", **common)
def get_tags( db_session: SessionLocal, user_id: int, user_email: str, channel_id: str, incident_id: str, query_str: str, request: Request, ): """Fetches tags based on the current query.""" # use the project from the incident if available filter_spec = {} if incident_id: incident = incident_service.get(db_session=db_session, incident_id=incident_id) # scope to current incident project filter_spec = { "and": [{ "model": "Project", "op": "==", "field": "id", "value": incident.project.id }] } submitted_form = request.get("view") parsed_form_data = parse_submitted_form(submitted_form) project = parsed_form_data.get(IncidentBlockId.project) if project: filter_spec = { "and": [{ "model": "Project", "op": "==", "field": "name", "value": project["value"] }] } # attempt to filter by tag type if "/" in query_str: tag_type, tag_name = query_str.split("/") type_filter = { "model": "TagType", "op": "==", "field": "name", "value": tag_type } if filter_spec.get("and"): filter_spec["and"].append(type_filter) else: filter_spec = {"and": [type_filter]} if not tag_name: query_str = None tags = search_filter_sort_paginate(db_session=db_session, model="Tag", query_str=query_str, filter_spec=filter_spec) else: tags = search_filter_sort_paginate(db_session=db_session, model="Tag", query_str=query_str, filter_spec=filter_spec) options = [] for t in tags["items"]: options.append({ "text": { "type": "plain_text", "text": f"{t.tag_type.name}/{t.name}" }, "value": str( t.id ), # NOTE slack doesn't not accept int's as values (fails silently) }) return {"options": options}
def get_organizations(common: dict = Depends(common_parameters)): """ Get all organizations. """ return search_filter_sort_paginate(model="Organization", **common)