Erreurs : il ne faut pas faire de test contextuel quand on crée un

objet depuis un ldif. Il faut s'assurer avant de créer l'objet
que le ldif est valide. C'est fait par setitem pour tout ce qui est
modification, et par _create_entity pour ce qui est création
This commit is contained in:
Pierre-Elliott Bécue 2013-01-28 01:32:09 +01:00
parent 42c48f77e8
commit 4066eafd14

View file

@ -173,6 +173,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
# Si on a un dn, on se connecte avec à la base ldap sinon on s'y
# connecte en anonyme
if dn:
secrets = import_secrets()
self.conn = self.bind_s(secrets.ldap_auth_dn, secrets.ldap_password)
self.dn = dn
self.droits = self.search_s(dn, ldap.SCOPE_BASE, attrlist=['droits'])[0][1].get('droits', [])
@ -303,7 +304,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
def _create_entity(self, dn, uldif):
'''Crée une nouvelle entité ldap en dn, avec attributs ldif:
uniquement en unicode'''
# Conversion en cldiff pour vérification des valeurs
# Conversion en cldif pour vérification des valeurs
cldif = ldif_to_cldif(uldif, self)
# Conversion en ascii
ldif = cldif_to_ldif(cldif)
@ -420,7 +421,7 @@ class CransLdapObject(object):
self.attrs = ldif
if dn != base_dn: # new_cransldapobject ne donne pas de ldif formaté et utilise un ldif non formaté, donc on formate
self.attrs = ldif_to_uldif(self.attrs)
self.attrs = ldif_to_cldif(self.attrs, conn, check_ctxt = True)
self.attrs = ldif_to_cldif(self.attrs, conn, check_ctxt = False)
self._modifs = ldif_to_uldif(ldif)
self._modifs = ldif_to_cldif(self._modifs, conn, check_ctxt = False)
orig = ldif