diff --git a/src/account_helper/management/commands/deletable.py b/src/account_helper/management/commands/deletable.py index 679506a..60e7d86 100644 --- a/src/account_helper/management/commands/deletable.py +++ b/src/account_helper/management/commands/deletable.py @@ -1,4 +1,6 @@ +from django.core.exceptions import ObjectDoesNotExist from django.core.management.base import BaseCommand, CommandError +from account_manager.models import LdapGroup, LdapUser from account_helper.models import DeletedUser from django.utils import timezone from django.core import serializers @@ -32,7 +34,17 @@ class Command(BaseCommand): if options['delete']: for user in deletables: - pass + # LdapGroup.base_dn = LdapGroup.ROOT_DN + # user_groups = LdapGroup.objects.filter(members__contains=user.ldap_dn) + LdapUser.base_dn = LdapUser.ROOT_DN + ldap_user = LdapUser.objects.get(dn=user.ldap_dn) + LdapGroup.remove_user_from_groups(ldap_user) + ldap_user.delete() + try: + user.user.delete() + user.delete() + except ObjectDoesNotExist: + pass if not options['json']: output += '\nSuccessfully deleted all listed users' self.stdout.write(self.style.SUCCESS(output)) diff --git a/src/account_manager/models.py b/src/account_manager/models.py index db3e770..999c8aa 100644 --- a/src/account_manager/models.py +++ b/src/account_manager/models.py @@ -11,6 +11,7 @@ from ldap import NO_SUCH_OBJECT, ALREADY_EXISTS from ldapdb.models import fields as ldap_fields from ldapdb.models.base import Model +from account_manager.utils.dbldap import get_filterstr from account_manager.utils.mail_utils import send_welcome_mail logger = logging.getLogger(__name__) @@ -130,6 +131,20 @@ class LdapGroup(Model): LdapGroup.base_dn = group_base_dn return LdapGroup.objects.filter(members=user.dn) + @staticmethod + def remove_user_from_groups(ldap_user, user_groups=None): + if not user_groups: + LdapGroup.base_dn = LdapGroup.ROOT_DN + user_groups = LdapGroup.objects.filter(members__contains=ldap_user.dn) + for group in user_groups: + logger.info(group.members) + logger.info(ldap_user) + group.members.remove(ldap_user.dn) + logger.info(group) + # logger.info(get_filterstr(group)) + # LdapGroup.base_dn = 'cn=uiuiui,ou=groups,ou=wiai,ou=fachschaften,dc=test,dc=de' + group.save() + def __str__(self): return self.name diff --git a/src/account_manager/views/user_views.py b/src/account_manager/views/user_views.py index fdf16fb..a20529f 100644 --- a/src/account_manager/views/user_views.py +++ b/src/account_manager/views/user_views.py @@ -418,7 +418,7 @@ def realm_user_group_update_delete(request, realm_id, user_dn): for group_name in group_names: groups.append(LdapGroup.objects.get(name=group_name)) try: - ldap_remove_user_from_groups(user_dn, groups) + LdapGroup.remove_user_from_groups(user_dn, groups) except OBJECT_CLASS_VIOLATION as err: ldap_user, realm_groups_available, user_groups = get_available_given_groups(realm, user_dn) return render(request, 'user/realm_user_update_groups.jinja2', @@ -472,12 +472,6 @@ def user_delete_controller(ldap_user, realm): return -def ldap_remove_user_from_groups(ldap_user, user_groups): - for group in user_groups: - group.members.remove(ldap_user) - group.save() - - def ldap_add_user_to_groups(ldap_user, user_groups): for group in user_groups: group.members.append(ldap_user) diff --git a/src/core/docker_settings.py b/src/core/docker_settings.py index 4fb276c..97176e7 100644 --- a/src/core/docker_settings.py +++ b/src/core/docker_settings.py @@ -217,12 +217,16 @@ LOGGING = { 'level': 'DEBUG', }, 'django_auth_ldap': { - 'level': 'WARNING', + 'level': 'DEBUG', 'handlers': ['console'], }, - 'django': { + 'django_ldapdb': { + 'level': 'DEBUG', 'handlers': ['console'], - 'level': 'WARNING', + }, + '*': { + 'handlers': ['console'], + 'level': 'DEBUG', } }, }