Mercurial > kallithea
changeset 7425:c6207df9841f
controllers: forward pullrequests.delete_comment to changeset
Remove duplication between pullrequests and changeset.
We move the code outside ChangesetController to make it callable from
PullrequestsController.
Note:
- instead of keeping the method pullrequests.delete_comment itself and
letting it forward to changeset.delete_comment, an alternative solution
would have been to change the routing table directly. However, the chosen
solution makes it more explicit which operations are supported on each
controller.
author | Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> |
---|---|
date | Thu, 08 Nov 2018 21:38:37 +0100 |
parents | 0ac1aaccd19c |
children | b58113063bb2 |
files | kallithea/controllers/changeset.py kallithea/controllers/pullrequests.py |
diffstat | 2 files changed, 21 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/changeset.py Fri Oct 19 22:02:55 2018 +0200 +++ b/kallithea/controllers/changeset.py Thu Nov 08 21:38:37 2018 +0100 @@ -187,6 +187,22 @@ return comment +def delete_cs_pr_comment(repo_name, comment_id, pr_comment=False): + co = ChangesetComment.get_or_404(comment_id) + if co.repo.repo_name != repo_name: + raise HTTPNotFound() + if pr_comment and co.pull_request.is_closed(): + # don't allow deleting comments on closed pull request + raise HTTPForbidden() + + owner = co.author_id == request.authuser.user_id + repo_admin = h.HasRepoPermissionLevel('admin')(repo_name) + if h.HasPermissionAny('hg.admin')() or repo_admin or owner: + ChangesetCommentsModel().delete(comment=co) + Session().commit() + return True + else: + raise HTTPForbidden() class ChangesetController(BaseRepoController): @@ -399,22 +415,8 @@ @LoginRequired() @HasRepoPermissionLevelDecorator('read') @jsonify - def delete_comment(self, repo_name, comment_id, pr_comment=False): - co = ChangesetComment.get_or_404(comment_id) - if co.repo.repo_name != repo_name: - raise HTTPNotFound() - if pr_comment and co.pull_request.is_closed(): - # don't allow deleting comments on closed pull request - raise HTTPForbidden() - - owner = co.author_id == request.authuser.user_id - repo_admin = h.HasRepoPermissionLevel('admin')(repo_name) - if h.HasPermissionAny('hg.admin')() or repo_admin or owner: - ChangesetCommentsModel().delete(comment=co) - Session().commit() - return True - else: - raise HTTPForbidden() + def delete_comment(self, repo_name, comment_id): + return delete_cs_pr_comment(repo_name, comment_id, pr_comment=False) @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read')
--- a/kallithea/controllers/pullrequests.py Fri Oct 19 22:02:55 2018 +0200 +++ b/kallithea/controllers/pullrequests.py Thu Nov 08 21:38:37 2018 +0100 @@ -43,7 +43,7 @@ from kallithea.lib.vcs.exceptions import EmptyRepositoryError, ChangesetDoesNotExistError from kallithea.lib.vcs.utils import safe_str from kallithea.lib.vcs.utils.hgcompat import unionrepo -from kallithea.model.db import PullRequest, ChangesetStatus, ChangesetComment, \ +from kallithea.model.db import PullRequest, ChangesetStatus, \ PullRequestReviewer, Repository, User from kallithea.model.pull_request import CreatePullRequestAction, CreatePullRequestIterationAction, PullRequestModel from kallithea.model.meta import Session @@ -53,7 +53,7 @@ from kallithea.model.forms import PullRequestForm, PullRequestPostForm from kallithea.lib.utils2 import safe_int from kallithea.controllers.changeset import _ignorews_url, _context_url, \ - create_comment + create_comment, delete_cs_pr_comment from kallithea.controllers.compare import CompareController from kallithea.lib.graphmod import graph_data @@ -716,18 +716,4 @@ @HasRepoPermissionLevelDecorator('read') @jsonify def delete_comment(self, repo_name, comment_id): - co = ChangesetComment.get_or_404(comment_id) - if co.repo.repo_name != repo_name: - raise HTTPNotFound() - if co.pull_request.is_closed(): - # don't allow deleting comments on closed pull request - raise HTTPForbidden() - - owner = co.author_id == request.authuser.user_id - repo_admin = h.HasRepoPermissionLevel('admin')(repo_name) - if h.HasPermissionAny('hg.admin')() or repo_admin or owner: - ChangesetCommentsModel().delete(comment=co) - Session().commit() - return True - else: - raise HTTPForbidden() + return delete_cs_pr_comment(repo_name, comment_id, pr_comment=True)