| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 1714d0a commit 88693ff
4 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -189,6 +189,10 @@ Attempt to rebase an MR:: | |||
| 189 | 189 | ||
| 190 | 190 | mr.rebase() | |
| 191 | 191 | ||
| 192 | + Clear all approvals of a merge request (possible with project or group access tokens only):: | ||
| 193 | + | ||
| 194 | + mr.reset_approvals() | ||
| 195 | + | ||
| 192 | 196 | Get status of a rebase for an MR:: | |
| 193 | 197 | ||
| 194 | 198 | mr = project.mergerequests.get(mr_id, include_rebase_in_progress=True) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -205,6 +205,10 @@ class GitlabMRRebaseError(GitlabOperationError): | |||
| 205 | 205 | pass | |
| 206 | 206 | ||
| 207 | 207 | ||
| 208 | + class GitlabMRResetApprovalError(GitlabOperationError): | ||
| 209 | + pass | ||
| 210 | + | ||
| 211 | + | ||
| 208 | 212 | class GitlabMRClosedError(GitlabOperationError): | |
| 209 | 213 | pass | |
| 210 | 214 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -327,6 +327,24 @@ def rebase(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: | |||
| 327 | 327 | data: Dict[str, Any] = {} | |
| 328 | 328 | return self.manager.gitlab.http_put(path, post_data=data, **kwargs) | |
| 329 | 329 | ||
| 330 | + @cli.register_custom_action("ProjectMergeRequest") | ||
| 331 | + @exc.on_http_error(exc.GitlabMRResetApprovalError) | ||
| 332 | + def reset_approvals( | ||
| 333 | + self, **kwargs: Any | ||
| 334 | + ) -> Union[Dict[str, Any], requests.Response]: | ||
| 335 | + """Clear all approvals of the merge request. | ||
| 336 | + | ||
| 337 | + Args: | ||
| 338 | + **kwargs: Extra options to send to the server (e.g. sudo) | ||
| 339 | + | ||
| 340 | + Raises: | ||
| 341 | + GitlabAuthenticationError: If authentication is not correct | ||
| 342 | + GitlabMRResetApprovalError: If reset approval failed | ||
| 343 | + """ | ||
| 344 | + path = f"{self.manager.path}/{self.encoded_id}/reset_approvals" | ||
| 345 | + data: Dict[str, Any] = {} | ||
| 346 | + return self.manager.gitlab.http_put(path, post_data=data, **kwargs) | ||
| 347 | + | ||
| 330 | 348 | @cli.register_custom_action("ProjectMergeRequest") | |
| 331 | 349 | @exc.on_http_error(exc.GitlabGetError) | |
| 332 | 350 | def merge_ref(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -117,6 +117,15 @@ def test_merge_request_rebase(project): | |||
| 117 | 117 | assert mr.rebase() | |
| 118 | 118 | ||
| 119 | 119 | ||
| 120 | + def test_merge_request_reset_approvals(gitlab_url, project): | ||
| 121 | + bot = project.access_tokens.create({"name": "bot", "scopes": ["api"]}) | ||
| 122 | + bot_gitlab = gitlab.Gitlab(gitlab_url, private_token=bot.token) | ||
| 123 | + bot_project = bot_gitlab.projects.get(project.id, lazy=True) | ||
| 124 | + | ||
| 125 | + mr = bot_project.mergerequests.list()[0] | ||
| 126 | + assert mr.reset_approvals() | ||
| 127 | + | ||
| 128 | + | ||
| 120 | 129 | @pytest.mark.skip(reason="flaky test") | |
| 121 | 130 | def test_merge_request_merge(project): | |
| 122 | 131 | mr = project.mergerequests.list()[0] | |
| Back | FazBrowse Home | New Git URL |
0 commit comments