Merge branch 'master' of charybde.crans.org:/git/ldap

This commit is contained in:
Valentin Samir 2013-05-08 01:15:57 +02:00
commit 3b09c98c5b
2 changed files with 21 additions and 17 deletions

View file

@ -103,6 +103,7 @@ class AttrsDict(dict) :
super(AttrsDict, self).__init__(ldif)
self._conn = conn
self._parent = Parent
self._iterator = None
def __getitem__(self, attr):
values = super(AttrsDict, self).__getitem__(attr)
@ -134,6 +135,9 @@ class AttrsDict(dict) :
except KeyError:
return default_value
def items(self):
return [(key, self[key]) for key in self]
class Attr(object):
"""Objet représentant un attribut.

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):
"""
@ -324,15 +324,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
@ -489,7 +490,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 = {}