diff --git a/progit/app.py b/progit/app.py index c9ac476..7012c93 100644 --- a/progit/app.py +++ b/progit/app.py @@ -442,12 +442,36 @@ def view_issue(repo, issueid, username=None): if issue is None: flask.abort(404, 'Issue not found') + status = progit.lib.get_issue_statuses(SESSION) + form = progit.forms.UpdateIssueStatusForm(status=status) + + if form.validate_on_submit(): + try: + message = progit.lib.edit_issue( + SESSION, + issue=issue, + status=form.status.data, + ) + SESSION.commit() + flask.flash(message) + url = flask.url_for('view_issues', repo=repo.name) + if username: + url = flask.url_for( + 'view_fork_issues', username=username, repo=repo.name) + return flask.redirect(url) + except SQLAlchemyError, err: # pragma: no cover + SESSION.rollback() + flask.flash(str(err), 'error') + elif flask.request.method == 'GET': + form.status.data = issue.status + return flask.render_template( 'issue.html', select='issues', repo=repo, username=username, issue=issue, + form=form, ) diff --git a/progit/templates/issue.html b/progit/templates/issue.html index d8299dc..d79a36b 100644 --- a/progit/templates/issue.html +++ b/progit/templates/issue.html @@ -1,4 +1,5 @@ {% extends "repo_master.html" %} +{% from "_formhelper.html" import render_field_in_list %} {% block title %}Home{% endblock %} {%block tag %}home{% endblock %} @@ -9,6 +10,13 @@

Issue #{{ issue.id }}

+ {% if username %} +
+ {% else %} + + {% endif %} + {{ form.csrf_token }} +
diff --git a/progit/urls.py b/progit/urls.py index 1e2a8d6..670bb80 100644 --- a/progit/urls.py +++ b/progit/urls.py @@ -310,14 +310,15 @@ def fork_new_issue(username, repo): return progit.app.new_issue(repo, username=username) -@APP.route('//issue/') +@APP.route('//issue/', methods=('GET', 'POST')) def view_issue(repo, issueid): """ List all issues associated to a repo """ return progit.app.view_issue(repo, issueid) -@APP.route('/fork///issue/') +@APP.route('/fork///issue/', + methods=('GET', 'POST')) def view_fork_issue(username, repo, issueid): """ List all issues associated to a repo """