From 827c774a239fbb670c0cb8167051aecfcb1d5bb8 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Oct 04 2016 17:47:41 +0000 Subject: Add possibility to set/remove the close status in the settings page of a project --- diff --git a/pagure/templates/settings.html b/pagure/templates/settings.html index f5308c5..1573ccf 100644 --- a/pagure/templates/settings.html +++ b/pagure/templates/settings.html @@ -619,6 +619,60 @@
+ Close status +
+
+

+ Here is the list of all the status that can be used when closing + an issue. +

+
+
+ {{ tag_form.csrf_token }} +
+
+
+ Status +
+
+
+ {% for status in repo.close_status | sort %} +
+
+ +
+
+ {% endfor %} +
+ +
+
+ +
+
+
+
+
+
+ +
+
+
Issue Tags
@@ -807,5 +861,17 @@ $('#new_milestone').click(function(e) { ); }); +$('#new_close_status').click(function(e) { + console.log('new close status'); + $('#close_sstatus').append( + '
\ +
\ + \ +
\ +
' + ); +}); + {% endblock %} diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index 4d19889..c857a4a 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -2046,3 +2046,53 @@ def update_public_notifications(repo, username=None, namespace=None): return flask.redirect(flask.url_for( 'view_settings', username=username, repo=repo.name, namespace=repo.namespace)) + + +@APP.route('//update/close_status', methods=['POST']) +@APP.route('///update/close_status', methods=['POST']) +@APP.route('/fork///update/close_status', methods=['POST']) +@APP.route( + '/fork////update/close_status', + methods=['POST']) +@login_required +def update_close_status(repo, username=None, namespace=None): + """ Update the close_status of a project. + """ + if admin_session_timedout(): + flask.flash('Action canceled, try it again', 'error') + url = flask.url_for( + 'view_settings', username=username, repo=repo, + namespace=namespace) + return flask.redirect( + flask.url_for('auth_login', next=url)) + + repo = flask.g.repo + + if not repo.settings.get('issue_tracker', True): + flask.abort(404, 'No issue tracker found for this project') + + if not flask.g.repo_admin: + flask.abort( + 403, + 'You are not allowed to change the settings for this project') + + form = pagure.forms.ConfirmationForm() + + error = False + if form.validate_on_submit(): + close_status = [ + w.strip() for w in flask.request.form.getlist('close_status') + if w.strip() + ] + try: + repo.close_status = close_status + SESSION.add(repo) + SESSION.commit() + flask.flash('List of close status updated') + except SQLAlchemyError as err: # pragma: no cover + SESSION.rollback() + flask.flash(str(err), 'error') + + return flask.redirect(flask.url_for( + 'view_settings', username=username, repo=repo.name, + namespace=namespace))