diff --git a/progit/app.py b/progit/app.py index ee61eb4..96cfeb7 100644 --- a/progit/app.py +++ b/progit/app.py @@ -542,3 +542,51 @@ def view_issue(repo, issueid): repo=repo, issue=issue, ) + +@APP.route('//issue//edit', methods=('GET', 'POST')) +def edit_issue(repo, issueid): + """ Edit the specified issue + """ + repo = progit.lib.get_project(SESSION, repo) + + if repo is None: + flask.abort(404, 'Project not found') + + issue = progit.lib.get_issue(SESSION, issueid) + + if issue is None: + flask.abort(404, 'Issue not found') + + form = progit.forms.IssueForm() + if form.validate_on_submit(): + title = form.title.data + content = form.content.data + + try: + message = progit.lib.edit_issue( + SESSION, + issue=issue, + title=title, + content=content, + ) + SESSION.commit() + flask.flash(message) + return flask.redirect(flask.url_for( + 'view_issues', repo=repo.name)) + except progit.exceptions.ProgitException, err: + flask.flash(str(err), 'error') + except SQLAlchemyError, err: # pragma: no cover + SESSION.rollback() + flask.flash(str(err), 'error') + elif flask.request.method == 'GET': + form.title.data = issue.title + form.content.data = issue.content + + return flask.render_template( + 'new_issue.html', + select='issues', + type='edit', + form=form, + repo=repo, + issue=issue, + )