From 5e1ea82324fe1348e2a9456dbd235b17a18f4413 Mon Sep 17 00:00:00 2001
From: Benjamin Bertrand <benjamin.bertrand@esss.se>
Date: Wed, 28 Nov 2018 13:52:23 +0100
Subject: [PATCH] Add button to delete Ansible group

JIRA INFRA-678 #action In Progress
---
 app/network/views.py                  | 10 ++++++++++
 app/templates/network/view_group.html | 20 ++++++++++++++++++--
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/app/network/views.py b/app/network/views.py
index cf617b2..c6e5869 100644
--- a/app/network/views.py
+++ b/app/network/views.py
@@ -403,6 +403,16 @@ def view_ansible_group(name):
     return render_template("network/view_group.html", group=group)
 
 
+@bp.route("/groups/delete", methods=["POST"])
+@login_groups_accepted("admin")
+def delete_ansible_group():
+    group = models.AnsibleGroup.query.get_or_404(request.form["group_id"])
+    db.session.delete(group)
+    db.session.commit()
+    flash(f"Group {group.name} has been deleted", "success")
+    return redirect(url_for("network.list_ansible_groups"))
+
+
 @bp.route("/groups/edit/<name>", methods=("GET", "POST"))
 @login_groups_accepted("admin")
 def edit_ansible_group(name):
diff --git a/app/templates/network/view_group.html b/app/templates/network/view_group.html
index 1e41b74..c2a0843 100644
--- a/app/templates/network/view_group.html
+++ b/app/templates/network/view_group.html
@@ -1,5 +1,6 @@
 {% extends "network/groups.html" %}
-{% from "_helpers.html" import link_to_hosts, link_to_ansible_groups %}
+{% from "_helpers.html" import link_to_hosts, link_to_ansible_groups,
+   delete_button_with_confirmation %}
 
 {% block title %}View Ansible group - CSEntry{% endblock %}
 
@@ -17,7 +18,22 @@
     <div class="col-sm-9">
       <dl class="row">
         <dt class="col-sm-3">Name</dt>
-        <dd class="col-sm-9">{{ group.name }}</dd>
+        <dd class="col-sm-9">
+          <div class="row">
+            <div class="col-sm-10">
+              {{ group.name }}
+            </div>
+            {% if current_user.is_admin %}
+            <div class="col-sm-2 text-right">
+              <form method="POST" action="/network/groups/delete">
+                <input id="group_id" name="group_id" type="hidden" value="{{ group.id }}">
+                {{ delete_button_with_confirmation("Delete group", "deleteConfirmation-%s" | format(group.id),
+                   "Are you sure you want to delete the group %s?" | format(group.name)) }}
+              </form>
+            </div>
+            {% endif %}
+          </div>
+        </dd>
         <dt class="col-sm-3">Variables</dt>
         <dd class="col-sm-9"><pre>{{ group.vars | toyaml }}</pre></dd>
         <dt class="col-sm-3">Type</dt>
-- 
GitLab