From 4839bd2baf6a95961490c9060f3c4b214a9da73a Mon Sep 17 00:00:00 2001 From: kaiyou <pierre@jaury.eu> Date: Sun, 20 Dec 2020 12:15:24 +0100 Subject: [PATCH] Allow for transitions to be cancelled by admins --- hiboo/profile/templates/profile_list.html | 3 +++ hiboo/profile/views.py | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/hiboo/profile/templates/profile_list.html b/hiboo/profile/templates/profile_list.html index 9058bdb..f5ff722 100644 --- a/hiboo/profile/templates/profile_list.html +++ b/hiboo/profile/templates/profile_list.html @@ -47,6 +47,9 @@ {% for transition, (_, _, _, _, label) in profile.transitions(current_user).items() %} <a href="{{ url_for("profile.start_transition", profile_uuid=profile.uuid, transition=transition) }}">{{ label | capitalize }}</a> {% endfor %} + {% if profile.transition_step %} + <a href="{{ url_for("profile.cancel_transition", profile_uuid=profile.uuid) }}">{% trans %}Cancel{% endtrans %}</a> + {% endif %} </td> </tr> {% endfor %} diff --git a/hiboo/profile/views.py b/hiboo/profile/views.py index 2814a97..6d84754 100644 --- a/hiboo/profile/views.py +++ b/hiboo/profile/views.py @@ -188,7 +188,20 @@ def start_transition(profile_uuid, transition): return flask.redirect(flask.url_for(".details", profile_uuid=profile_uuid)) -@blueprint.route("/transition/<profile_uuid>", methods=["GET", "POST"]) +@blueprint.route("/transition/<profile_uuid>/cancel", methods=["GET", "POST"]) +@security.confirmation_required("cancel the profile status change") +@security.admin_required() +def cancel_transition(profile_uuid): + profile = models.Profile.query.get(profile_uuid) or flask.abort(404) + profile.transition = None + profile.transition_step = None + profile.transition_time = None + models.db.session.commit() + flask.flash(_("Profile status change was cancelled"), "success") + return flask.redirect(flask.url_for(".details", profile_uuid=profile_uuid)) + + +@blueprint.route("/transition/<profile_uuid>/complete", methods=["GET", "POST"]) @security.admin_required() def complete_transition(profile_uuid): profile = models.Profile.query.get(profile_uuid) or flask.abort(404) -- GitLab