Inint implementation init system

This commit is contained in:
Götz 2019-05-15 23:41:38 +02:00
parent 62ffd04fbd
commit ab9052bcac
4 changed files with 36 additions and 11 deletions

View File

@ -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))

View File

@ -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

View File

@ -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)

View File

@ -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',
}
},
}