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) super(AttrsDict, self).__init__(ldif)
self._conn = conn self._conn = conn
self._parent = Parent self._parent = Parent
self._iterator = None
def __getitem__(self, attr): def __getitem__(self, attr):
values = super(AttrsDict, self).__getitem__(attr) values = super(AttrsDict, self).__getitem__(attr)
@ -134,6 +135,9 @@ class AttrsDict(dict) :
except KeyError: except KeyError:
return default_value return default_value
def items(self):
return [(key, self[key]) for key in self]
class Attr(object): class Attr(object):
"""Objet représentant un attribut. """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 ] uldif[attr] = [ unicode(val, 'utf-8') for val in vals ]
return uldif return uldif
def ldif_to_cldif(ldif, conn): #def ldif_to_cldif(ldif, conn):
"""Transforme un dictionnaire renvoyé par python-ldap, en # """Transforme un dictionnaire renvoyé par python-ldap, en
un dictionnaire dont les valeurs sont des instances de Attr # 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 # Lorsqu'on récupère le ldif de la base ldap, on n'a pas besoin
de faire de tests... # de faire de tests...
""" # """
cldif = {} # cldif = {}
for attr, vals in ldif.items(): # for attr, vals in ldif.items():
cldif[attr] = [ attributs.attrify(val, attr, conn, ldif) for val in vals] # cldif[attr] = [ attributs.attrify(val, attr, conn, ldif) for val in vals]
return cldif # return cldif
def cldif_to_ldif(cldif): def cldif_to_ldif(cldif):
""" """
@ -324,15 +324,16 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
--Non implémenté !""" --Non implémenté !"""
raise NotImplementedError() raise NotImplementedError()
def _create_entity(self, dn, uldif): def _create_entity(self, dn, ldif):
'''Crée une nouvelle entité ldap en ``dn``, avec attributs ``ldif``: '''Crée une nouvelle entité ldap avec le dn ``dn`` et les
uniquement en unicode''' attributs de ``ldif``. Attention, ldif doit contenir des
données encodées.'''
# Conversion en cldif pour vérification des valeurs # Conversion en cldif pour vérification des valeurs
cldif = ldif_to_cldif(uldif, self) cldif = attributs.AttrsDict(self, ldif, Parent=None)
# Conversion en ascii # Conversion en ascii
ldif = cldif_to_ldif(cldif) data = cldif_to_ldif(cldif)
# Renvoi du CransLdapObject # Renvoi du CransLdapObject
return new_cransldapobject(self, dn, 'rw', ldif) return new_cransldapobject(self, dn, 'rw', data)
def _find_id(self, attr, plage=None): def _find_id(self, attr, plage=None):
'''Trouve un id libre. Si une plage est fournie, cherche '''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 # 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 = None # C'est là qu'on met les modifications
self._modifs_unchecked = []
self.dn = dn self.dn = dn
orig = {} orig = {}