diff --git a/pagure/lib/model.py b/pagure/lib/model.py index bcb02dd..9d97ee8 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -288,6 +288,7 @@ class Project(BASE): 'issue_tracker': True, 'project_documentation': True, 'pull_requests': True, + 'Only_assignee_can_close_pull-request': False, } if self._settings: diff --git a/pagure/ui/fork.py b/pagure/ui/fork.py index 2f97be5..ec79394 100644 --- a/pagure/ui/fork.py +++ b/pagure/ui/fork.py @@ -412,6 +412,19 @@ def merge_request_pull(repo, requestid, username=None): 403, 'You are not allowed to merge pull-request for this project') + if repo.settings.get('Only_assignee_can_close_pull-request', False): + if not request.assignee: + flask.flash( + 'This request must be assigned to be merged', 'error') + return flask.redirect(flask.url_for( + 'request_pull', username=username, + repo=repo.name, requestid=requestid)) + if request.assignee.username != flask.g.fas_user.username: + flask.flash('Only the assignee can merge this review', 'error') + return flask.redirect(flask.url_for( + 'request_pull', username=username, + repo=repo.name, requestid=requestid)) + error_output = flask.url_for( 'request_pull', repo=repo.name, requestid=requestid) if username: