@@ -1591,6 +1591,37 @@ def get_pull_requests(
15911591 params ["at" ] = at
15921592 return self ._get_paged (url , params = params )
15931593
1594+ def get_required_reviewers_for_pull_request (
1595+ self , source_project , source_repo , dest_project , dest_repo , source_branch , dest_branch
1596+ ):
1597+ """
1598+ Get required reviewers for PR creation
1599+ :param source_project: the project that the PR source is from
1600+ :param source_repo: the repository that the PR source is from
1601+ :param source_branch: the branch name of the PR
1602+ :param dest_project: the project that the PR destination is from
1603+ :param dest_repo: the repository that the PR destination is from
1604+ :param dest_branch: where the PR is being merged into
1605+ :return:
1606+ """
1607+ url = "{}/reviewers" .format (
1608+ self ._url_repo (
1609+ dest_project ,
1610+ dest_repo ,
1611+ api_root = "rest/default-reviewers" ,
1612+ api_version = "1.0" ,
1613+ )
1614+ )
1615+ source_repo_id = self .get_repo (source_project , source_repo )["id" ]
1616+ dest_repo_id = self .get_repo (dest_project , dest_repo )["id" ]
1617+ params = {
1618+ "sourceRepoId" : source_repo_id ,
1619+ "sourceRefId" : source_branch ,
1620+ "targetRepoId" : dest_repo_id ,
1621+ "targetRefId" : dest_branch ,
1622+ }
1623+ return self .get (url , params = params )
1624+
15941625 def open_pull_request (
15951626 self ,
15961627 source_project ,
@@ -1602,6 +1633,7 @@ def open_pull_request(
16021633 title ,
16031634 description ,
16041635 reviewers = None ,
1636+ include_required_reviewers = False ,
16051637 ):
16061638 """
16071639 Create a new pull request between two branches.
@@ -1617,6 +1649,7 @@ def open_pull_request(
16171649 :param title: the title of the PR
16181650 :param description: the description of what the PR does
16191651 :param reviewers: the list of reviewers or a single reviewer of the PR
1652+ :param include_required_reviewers: OPTIONAL defaults to False, include required reviewers for the PR
16201653 :return:
16211654 """
16221655 body = {
@@ -1645,6 +1678,13 @@ def add_reviewer(reviewer_name):
16451678 entry = {"user" : {"name" : reviewer_name }}
16461679 body ["reviewers" ].append (entry )
16471680
1681+ if not self .cloud and include_required_reviewers :
1682+ required_reviewers = self .get_required_reviewers_for_pull_request (
1683+ source_project , source_repo , dest_project , dest_repo , source_branch , destination_branch
1684+ )
1685+ for required_reviewer in required_reviewers :
1686+ add_reviewer (required_reviewer ["name" ])
1687+
16481688 if reviewers is not None :
16491689 if isinstance (reviewers , str ):
16501690 add_reviewer (reviewers )
0 commit comments