diff --git a/pagure/templates/pull_request_title.html b/pagure/templates/pull_request_title.html new file mode 100644 index 0000000..480ac9b --- /dev/null +++ b/pagure/templates/pull_request_title.html @@ -0,0 +1,29 @@ +{% extends "repo_master.html" %} +{% from "_formhelper.html" import render_field_in_row %} + +{% block title %}Edit PR#{{ request.id }}: {{ request.title }} - {{ repo.name }}{% endblock %} +{%block tag %}home{% endblock %} + + +{% block repo %} + +

Edit PR#{{ request.id }}: {{ request.title }} - {{ repo.name }}

+ +
+
+ +

Enter in the field below the new title

+ + {{ render_field_in_row(form.title) }} +
+

+ + + {{ form.csrf_token }} +

+
+
+ +{% endblock %} diff --git a/pagure/ui/fork.py b/pagure/ui/fork.py index f15cd58..8e5787b 100644 --- a/pagure/ui/fork.py +++ b/pagure/ui/fork.py @@ -324,6 +324,68 @@ def request_pull_patch(repo, requestid, username=None): return flask.Response(patch, content_type="text/plain;charset=UTF-8") + +@APP.route('//pull-request//edit/', + methods=('GET', 'POST')) +@APP.route('//pull-request//edit', + methods=('GET', 'POST')) +@APP.route('/fork///pull-request//edit/', + methods=('GET', 'POST')) +@APP.route('/fork///pull-request//edit', + methods=('GET', 'POST')) +@cla_required +def request_pull_edit(repo, requestid, username=None): + """ Edit the title of a pull-request. + """ + + repo = pagure.lib.get_project(SESSION, repo, user=username) + + if not repo: + flask.abort(404, 'Project not found') + + if not repo.settings.get('pull_requests', True): + flask.abort(404, 'No pull-requests found for this project') + + request = pagure.lib.search_pull_requests( + SESSION, project_id=repo.id, requestid=requestid) + + if not request: + flask.abort(404, 'Pull-request not found') + + if not is_repo_admin(repo) \ + or flask.g.fas_user.username != request.user.username : + flask.abort(403, 'You are not allowed to edit this pull-request') + + form = pagure.forms.RequestPullForm() + + if form.validate_on_submit(): + request.title = form.title.data + SESSION.add(request) + try: + SESSION.commit() + flask.flash('Request pull edited!') + except SQLAlchemyError as err: # pragma: no cover + SESSION.rollback() + APP.logger.exception(err) + flask.flash( + 'Could not edit this pull-request in the database', + 'error') + return flask.redirect(flask.url_for( + 'request_pull', username=username, + repo=repo.name, requestid=requestid)) + elif flask.request.method == 'GET': + form.title.data = request.title + + return flask.render_template( + 'pull_request_title.html', + select='requests', + request=request, + repo=repo, + username=username, + form=form, + ) + + @APP.route('//pull-request//comment', methods=['POST']) @APP.route('//pull-request//comment//'