Source code for pyatlassian.atlassian_jira.projects

# -*- coding: utf-8 -*-

"""
"""

import typing as T
import dataclasses

from ..pagi import _paginate
from ..atlassian.api import (
    NA,
    rm_na,
    T_RESPONSE,
    T_KWARGS,
)
from .typehint import (
    T_PROJECT_ORDER_BY,
    T_PROJECT_ACTION,
    T_PROJECT_STATUS,
)

if T.TYPE_CHECKING:  # pragma: no cover
    from .model import Jira


[docs] @dataclasses.dataclass class ProjectsMixin: """ For detailed API document, see: https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects/#api-group-projects """
[docs] def get_projects_paginated( self: "Jira", start_at: int = NA, max_results: int = NA, order_by: T_PROJECT_ORDER_BY = NA, id: T.List[int] = NA, keys: T.List[str] = NA, query: str = NA, type_key: str = NA, category_id: int = NA, action: T_PROJECT_ACTION = NA, expand: str = NA, status: T.List[T_PROJECT_STATUS] = NA, properties: T.List[str] = NA, property_query: str = NA, req_kwargs: T.Optional[T_KWARGS] = None, _url: str = None, ) -> T_RESPONSE: """ For detailed parameter descriptions, see: https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects/#api-rest-api-3-project-search-get :param req_kwargs: additional ``requests.request()`` kwargs """ if _url is None: url = f"{self._root_url}/project/search" else: url = _url params = { "startAt": start_at, "maxResults": max_results, "orderBy": order_by, "id": id, "keys": keys, "query": query, "typeKey": type_key, "categoryId": category_id, "action": action, "expand": expand, "status": status, "properties": properties, "propertyQuery": property_query, } params = rm_na(**params) return self.make_request( method="GET", url=url, params=params, req_kwargs=req_kwargs, )
[docs] def pagi_get_projects_paginated( self: "Jira", start_at: int = NA, max_results: int = NA, order_by: T_PROJECT_ORDER_BY = NA, id: T.List[int] = NA, keys: T.List[str] = NA, query: str = NA, type_key: str = NA, category_id: int = NA, action: T_PROJECT_ACTION = NA, expand: str = NA, status: T.List[T_PROJECT_STATUS] = NA, properties: T.List[str] = NA, property_query: str = NA, req_kwargs: T.Optional[T_KWARGS] = None, total_max_results: int = 9999, ) -> T.Iterable[T_RESPONSE]: """ For detailed parameter descriptions, see: https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects/#api-rest-api-3-project-search-get :param req_kwargs: additional ``requests.request()`` kwargs :param total_max_results: total max results to fetch in all response """ def get_next_token(res): return res.get("nextPage") def set_next_token(kwargs, next_token): kwargs["_url"] = next_token yield from _paginate( method=self.get_projects_paginated, list_key="values", get_next_token=get_next_token, set_next_token=set_next_token, kwargs=dict( start_at=start_at, max_results=max_results, order_by=order_by, id=id, keys=keys, query=query, type_key=type_key, category_id=category_id, action=action, expand=expand, status=status, properties=properties, property_query=property_query, req_kwargs=req_kwargs, ), max_results=total_max_results, )
[docs] def get_all_status_for_project( self: "Jira", project_id_or_key: str, req_kwargs: T.Optional[T_KWARGS] = None, ) -> T_RESPONSE: """ For detailed parameter descriptions, see: https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects/#api-rest-api-3-project-projectidorkey-statuses-get :param req_kwargs: additional ``requests.request()`` kwargs """ params = { "projectIdOrKey": project_id_or_key, } params = rm_na(**params) params = params if len(params) else None return self.make_request( method="GET", url=f"{self._root_url}/project/{project_id_or_key}/statuses", params=params, req_kwargs=req_kwargs, )