From e3fe0b4bfb6822d12cc1036af439e2a58b8584b8 Mon Sep 17 00:00:00 2001 From: kakwa Date: Tue, 28 Jul 2015 00:18:05 +0200 Subject: [PATCH] implementing renaming entry --- ldapcherry/backend/backendLdap.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/ldapcherry/backend/backendLdap.py b/ldapcherry/backend/backendLdap.py index e838ec6..7504cde 100644 --- a/ldapcherry/backend/backendLdap.py +++ b/ldapcherry/backend/backendLdap.py @@ -289,16 +289,23 @@ class Backend(ldapcherry.backend.Backend): content = self._str(attrs[attr]) attr = self._str(attr) new = {attr: content} - if attr in old_attrs: - old = {attr: old_attrs[attr]} + # if attr is dn entry, use rename + if attr.lower() == self.dn_user_attr.lower(): + ldap_client.rename_s( + dn, + ldap.dn.dn2str([[(attr, content, 1)]]) + ) else: - old = {} - ldif = modlist.modifyModlist(old, new) - try: - ldap_client.modify_s(dn, ldif) - except Exception as e: - ldap_client.unbind_s() - self._exception_handler(e) + if attr in old_attrs: + old = {attr: old_attrs[attr]} + else: + old = {} + ldif = modlist.modifyModlist(old, new) + try: + ldap_client.modify_s(dn, ldif) + except Exception as e: + ldap_client.unbind_s() + self._exception_handler(e) ldap_client.unbind_s()