[lc_ldap, attributs] less Attrs doivent pouvoir accéder à conn

This commit is contained in:
Antoine Durand-Gasselin 2010-10-16 17:38:52 +02:00
parent 72e7f49f6c
commit d69d651282
2 changed files with 10 additions and 14 deletions

View file

@ -62,7 +62,7 @@ def ldif_to_uldif(ldif):
uldif[attr] = [ unicode(val, 'utf-8') for val in vals ]
return uldif
def ldif_to_cldif(ldif, check_ctxt = True):
def ldif_to_cldif(ldif, conn, check_ctxt = True):
"""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
@ -70,7 +70,7 @@ def ldif_to_cldif(ldif, check_ctxt = True):
"""
cldif = {}
for attr, vals in ldif.items():
cldif[attr] = [ attrify(val, attr, ldif, check_ctxt = check_ctxt) for val in vals]
cldif[attr] = [ attrify(val, attr, ldif, conn, check_ctxt = check_ctxt) for val in vals]
return cldif
def cldif_to_ldif(cldif):
@ -182,7 +182,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'''
cldif = ldif_to_cldif(uldif)
cldif = ldif_to_cldif(uldif, self)
#lock = CransLock(self)
for item in ['aid', 'uid', 'chbre', 'mailAlias', 'canonicalAlias',
'fid', 'cid', 'mid', 'macAddress', 'host', 'hostAlias' ]:
@ -255,7 +255,7 @@ class CransLdapObject(object):
self.attrs = ldif_to_uldif(self.attrs)
if mode in ['w', 'rw']:
self.attrs = ldif_to_cldif(self.attrs, check_ctxt = False)
self.attrs = ldif_to_cldif(self.attrs, conn, check_ctxt = False)
### Vérification que `λv. str(Attr(v))` est bien une projection
oldif = res[0][1]
@ -319,7 +319,7 @@ class CransLdapObject(object):
# On attrify
cldif = self.attrs.copy()
cldif[attr] = new_vals
new_vals = [ attrify(val, attr, cldif) for val in new_vals ]
new_vals = [ attrify(val, attr, cldif, conn) for val in new_vals ]
# Si ça passe, on effectue les modifications
old_vals = [ str(val) for val in self.attrs.get(attr, []) ]