diff --git a/account_manager/views/user_views.py b/account_manager/views/user_views.py index 3b90dfe..a11ba0e 100644 --- a/account_manager/views/user_views.py +++ b/account_manager/views/user_views.py @@ -81,7 +81,7 @@ def realm_user_delete(request, realm_id, user_dn): LdapUser.base_dn = f'ou=people,{realm_obj.ldap_base_dn}' LdapGroup.base_dn = f'ou=groups,{realm_obj.ldap_base_dn}' ldap_user = LdapUser.objects.get(dn=user_dn) - user_delete_controller(ldap_user) + user_delete_controller(ldap_user, realm_obj) return redirect('realm-user-list', realm_id) @@ -93,11 +93,13 @@ def realm_multiple_user_delete(request, realm_id): ldap_users = form.cleaned_data['ldap_users'] for ldap_user in ldap_users: # TODO: Failure catchup - user_delete_controller(ldap_user) + user_delete_controller(ldap_user, realm) return redirect('realm-user-list', realm_id) # TODO: Form not valid form = UserDeleteListForm() - return render(request, 'realm/realm_user_multiple_delete.jinja2', {'form': form, 'realm': realm}) + LdapUser.base_dn = realm.ldap_base_dn + users = LdapUser.objects.all() + return render(request, 'realm/realm_user_multiple_delete.jinja2', {'form': form, 'realm': realm, 'users': users}) @login_required @@ -131,7 +133,7 @@ def user_delete(request, realm_id, user_dn): LdapGroup.base_dn = f'ou=groups,{realm_obj.ldap_base_dn}' ldap_user = LdapUser.objects.get(dn=user_dn) if request.user.username == ldap_user.username: - user_delete_controller(ldap_user) + user_delete_controller(ldap_user, realm_obj) return redirect('account-deleted', realm_id) else: return redirect('permission-denied') @@ -162,10 +164,13 @@ def user_update_controller(ldap_user, realm_id, realm_obj, request, user_dn, red return render(request, detail_page, {'form': form, 'realm': realm_obj, 'user': ldap_user}) -def user_delete_controller(ldap_user): +def user_delete_controller(ldap_user, realm): + LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}' user_groups = LdapGroup.objects.filter(members__contains=ldap_user.dn) - + print(user_groups) for group in user_groups: + print(group) + # LdapGroup.base_dn = group.base_dn group.members.remove(ldap_user.dn) group.save() ldap_user.delete() diff --git a/static/css/floating_labels.css b/static/css/floating_labels.css index ab91dc0..b6ca5fe 100644 --- a/static/css/floating_labels.css +++ b/static/css/floating_labels.css @@ -110,4 +110,63 @@ .wrapper.toggled .sidebar-wrapper { margin-left: -15rem; } +} + +/* ------------------------------------------------------------------------------------------------------------------ */ +/* -- Data Tables -- */ +/* ------------------------------------------------------------------------------------------------------------------ */ +/*!* Hide stuff from dataTables that we do not neeed *!*/ +/*.dataTables_length, .dataTables_info, .dataTables_paginate {*/ +/*!*visibility: hidden*!*/ +/*}*/ + + +/* ------------------------------------------------------------------------------------------------------------------ */ +/* -- Multiple User deletion Custom checkbox -- */ +/* ------------------------------------------------------------------------------------------------------------------ */ + +.table-checkbox-control-label::before { + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +.table-checkbox-control-label::before { + /* position: absolute; */ + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1.2rem; + height: 1.2rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px; +} + +.table-checkbox-control-input:checked ~ .table-checkbox-control-label::before { + color: #fff; + border-color: var(--danger); + background-color: var(--danger); +} + +.table-checkbox-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + /*width: 1.5rem;*/ + /*height: 1.5rem;*/ + content: ""; + background: no-repeat 50% / 50% 50%; +} + +.table-checkbox-control-label { + position: relative; + margin-bottom: 0; + vertical-align: middle; +} + +.table-checkbox-control-input { + position: absolute; + z-index: -1; + opacity: 0; } \ No newline at end of file diff --git a/static/js/main.js b/static/js/main.js new file mode 100644 index 0000000..1ca747f --- /dev/null +++ b/static/js/main.js @@ -0,0 +1,22 @@ +// make the table a dataTable and show all entries by default +const TABLE_CLASS = '.data-table'; + +$(document).ready(function () { + // if ($(TABLE_CLASS)) { + const data_table = $(TABLE_CLASS).DataTable({ + "lengthMenu": [[-1], ["All"]], + "dom": 'it' + }); + // } + $('#data-table-search-input').keyup(function () { + data_table.search($(this).val()).draw(); + }); + + $("#delete-all-checkbox").change(function () { + if (document.getElementById('delete-all-checkbox').checked) { + $('.delete-checkbox').prop("checked", true); + } else { + $('.delete-checkbox').prop("checked", false); + } + }); +}); \ No newline at end of file diff --git a/templates/base.jinja2 b/templates/base.jinja2 index fce6a98..3f93bbd 100644 --- a/templates/base.jinja2 +++ b/templates/base.jinja2 @@ -14,16 +14,11 @@ {% block js_extra %}{% endblock %} - {# #} + - {# #} - {# #} - {# #} - {# #} - {# #} - {# #} - {# #} + {% block css_extra %}{% endblock %} @@ -49,14 +44,13 @@ {% block body %} - {#
#} - {#
{% block bottom_nav %}{% endblock %}
#} - {#
#} {% block content %}{% endblock %} - {#
#} - {#
#} {% endblock %} - + {% block js_tail %}{% endblock %} + + + + \ No newline at end of file diff --git a/templates/realm/realm_user.jinja2 b/templates/realm/realm_user.jinja2 index 0066596..fa40bac 100644 --- a/templates/realm/realm_user.jinja2 +++ b/templates/realm/realm_user.jinja2 @@ -1,24 +1,36 @@ {% extends 'realm/realm_detailed.jinja2' %} {% block detail_content %}

Nutzer

- Mehrere Nutzer Löschen - +
+ + +
+
- - + + + + {% for user in realm_user %} - + + + + {# #} {% endfor %}
NameLdap DomainNutzernameE-MailVornameNachname
{{ user.username }} - {{ user.dn }} - {{ user.email }}{{ user.first_name }}{{ user.last_name }}#} + {# {{ user.dn }}#} + {#
Nutzer hinzufügen + Mehrere Nutzer + Löschen {% endblock %} \ No newline at end of file diff --git a/templates/realm/realm_user_multiple_delete.jinja2 b/templates/realm/realm_user_multiple_delete.jinja2 index 809acf3..5d853ea 100644 --- a/templates/realm/realm_user_multiple_delete.jinja2 +++ b/templates/realm/realm_user_multiple_delete.jinja2 @@ -3,9 +3,50 @@ {% block detail_content %}

Nutzer löschen

+
+ + +
- {{ form.as_p() }} +{# {{ form.as_p() }}#} + + + + + + + + + + + + {% for user in users %} + + + + + + + + {% endfor %} + +
+ + NutzernameE-MailVornameNachname
+ + {{ user.username }}{{ user.email }}{{ user.first_name }}{{ user.last_name }}