From 8d73839de73f7aa85a78c814dfe5d4e94f5af313 Mon Sep 17 00:00:00 2001 From: Julian Lobbes Date: Wed, 30 Nov 2022 18:37:19 +0100 Subject: [PATCH] feat(usermanager): add group deletion view --- lumi2/static/js/group_edit.js | 4 +-- lumi2/templates/usermanager/group_delete.html | 22 ++++++++++++++ lumi2/templates/usermanager/group_edit.html | 20 ++++++++----- lumi2/templates/usermanager/group_list.html | 2 +- lumi2/templates/usermanager/index.html | 2 +- lumi2/templates/usermanager/user_delete.html | 4 +-- lumi2/templates/usermanager/user_edit.html | 2 +- lumi2/templates/usermanager/user_list.html | 2 +- lumi2/templates/usermanager/user_view.html | 4 +-- lumi2/usermanager.py | 30 +++++++++++++++++++ 10 files changed, 75 insertions(+), 17 deletions(-) create mode 100644 lumi2/templates/usermanager/group_delete.html diff --git a/lumi2/static/js/group_edit.js b/lumi2/static/js/group_edit.js index a80ffdb..f66d239 100644 --- a/lumi2/static/js/group_edit.js +++ b/lumi2/static/js/group_edit.js @@ -72,7 +72,7 @@ class UserEntry { this.buttonElement.addClass("btn-danger"); this.buttonElement.empty(); this.buttonElement.html( - ' Remove from group' + ' Remove' ); } @@ -81,7 +81,7 @@ class UserEntry { this.buttonElement.addClass("btn-success"); this.buttonElement.empty(); this.buttonElement.html( - ' Add to group' + ' Add' ); } } diff --git a/lumi2/templates/usermanager/group_delete.html b/lumi2/templates/usermanager/group_delete.html new file mode 100644 index 0000000..5071b12 --- /dev/null +++ b/lumi2/templates/usermanager/group_delete.html @@ -0,0 +1,22 @@ +{% extends 'base.html' %} + +{% block content %} +
+
+

Are you sure you want to delete the group '{{ groupname }}'?

+

No Users will be deleted.

+
+
+
+ +
+
+ +
+
+
+{% endblock content %} diff --git a/lumi2/templates/usermanager/group_edit.html b/lumi2/templates/usermanager/group_edit.html index 0a86ad1..c8268dd 100644 --- a/lumi2/templates/usermanager/group_edit.html +++ b/lumi2/templates/usermanager/group_edit.html @@ -3,19 +3,25 @@ {% block content %}
-

Editing group: {{ groupname }}

+

Editing group: {{ groupname }}

+
+ Delete Group +
- + - {% for user in members %} + {% for user in members|sort %} @@ -41,11 +47,11 @@
Username{{ groupname }}
- + - {% for user in non_members %} + {% for user in non_members|sort %} diff --git a/lumi2/templates/usermanager/group_list.html b/lumi2/templates/usermanager/group_list.html index 76f9737..b346bb8 100644 --- a/lumi2/templates/usermanager/group_list.html +++ b/lumi2/templates/usermanager/group_list.html @@ -4,7 +4,7 @@

All groups

-
+
Welcome to LUMI 2 +

Welcome to LUMI 2

Picture of a toolbox. No, take me back + role="button">No, take me back!
- +
diff --git a/lumi2/templates/usermanager/user_edit.html b/lumi2/templates/usermanager/user_edit.html index 6a4f250..813fb3a 100644 --- a/lumi2/templates/usermanager/user_edit.html +++ b/lumi2/templates/usermanager/user_edit.html @@ -3,7 +3,7 @@ {% block content %}
-

{{ heading }}

+

{{ heading }}

diff --git a/lumi2/templates/usermanager/user_list.html b/lumi2/templates/usermanager/user_list.html index 81bd969..d4d10b9 100644 --- a/lumi2/templates/usermanager/user_list.html +++ b/lumi2/templates/usermanager/user_list.html @@ -4,7 +4,7 @@

All users

-
+
Edit + role="button"> Edit Delete + role="button"> Delete
{% endblock content %} diff --git a/lumi2/usermanager.py b/lumi2/usermanager.py index 0467dd8..127d9a8 100644 --- a/lumi2/usermanager.py +++ b/lumi2/usermanager.py @@ -392,3 +392,33 @@ def group_update(groupname: str): members=members, non_members=non_members, ) + + +@bp.route("/groups/delete/", methods=("GET", "POST")) +def group_delete(groupname: str): + """Deletion view for a specific Group. + + Provides a form prompting the confirmation of the specified group. + """ + + try: + conn = ldap.get_connection() + except Exception: + abort(500) + + try: + group = ldap.get_group(conn, groupname) + except ldap.EntryNotFoundException: + conn.unbind() + abort(404) + + if request.method == 'POST': + ldap.delete_group(conn, group.groupname) + conn.unbind() + flash(f"The group '{group.groupname}' was deleted.") + return redirect(url_for('usermanager.group_list')) + + return render_template( + 'usermanager/group_delete.html', + groupname=group.groupname, + )
UsernameOther Users