[lc_ldap] attrify ne reçoit plus de ldif, donc _create_entity doit changer

On en profite pour virer ldif_to_cldif, et pour donner une fonction
.items à AttrsDict
This commit is contained in:
Pierre-Elliott Bécue 2013-05-05 10:45:15 +02:00
parent a7d3af3ca1
commit af109e8c61
2 changed files with 21 additions and 17 deletions

View file

@ -105,16 +105,16 @@ def ldif_to_uldif(ldif):
uldif[attr] = [ unicode(val, 'utf-8') for val in vals ]
return uldif
def ldif_to_cldif(ldif, conn):
"""Transforme un dictionnaire renvoyé par python-ldap, en
un dictionnaire dont les valeurs sont des instances de Attr
Lorsqu'on récupère le ldif de la base ldap, on n'a pas besoin
de faire de tests...
"""
cldif = {}
for attr, vals in ldif.items():
cldif[attr] = [ attributs.attrify(val, attr, conn, ldif) for val in vals]
return cldif
#def ldif_to_cldif(ldif, conn):
# """Transforme un dictionnaire renvoyé par python-ldap, en
# un dictionnaire dont les valeurs sont des instances de Attr
# Lorsqu'on récupère le ldif de la base ldap, on n'a pas besoin
# de faire de tests...
# """
# cldif = {}
# for attr, vals in ldif.items():
# cldif[attr] = [ attributs.attrify(val, attr, conn, ldif) for val in vals]
# return cldif
def cldif_to_ldif(cldif):
"""
@ -307,15 +307,16 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
--Non implémenté !"""
raise NotImplementedError()
def _create_entity(self, dn, uldif):
'''Crée une nouvelle entité ldap en ``dn``, avec attributs ``ldif``:
uniquement en unicode'''
def _create_entity(self, dn, ldif):
'''Crée une nouvelle entité ldap avec le dn ``dn`` et les
attributs de ``ldif``. Attention, ldif doit contenir des
données encodées.'''
# Conversion en cldif pour vérification des valeurs
cldif = ldif_to_cldif(uldif, self)
cldif = attributs.AttrsDict(self, ldif, Parent=None)
# Conversion en ascii
ldif = cldif_to_ldif(cldif)
data = cldif_to_ldif(cldif)
# Renvoi du CransLdapObject
return new_cransldapobject(self, dn, 'rw', ldif)
return new_cransldapobject(self, dn, 'rw', data)
def _find_id(self, attr, plage=None):
'''Trouve un id libre. Si une plage est fournie, cherche
@ -472,7 +473,6 @@ class CransLdapObject(object):
# est dans la base. On attrify paresseusement au moment où on utilise un attribut
self._modifs = None # C'est là qu'on met les modifications
self._modifs_unchecked = []
self.dn = dn
orig = {}