On ajoute de la paresse dans la transformation des attributs ldap en attributs python.
Cela permets d'économiser de la mémoire lorsque l'on manipule un nombre important d'objet
This commit is contained in:
parent
cda292dcdb
commit
db32b1d65a
2 changed files with 27 additions and 11 deletions
22
lc_ldap.py
22
lc_ldap.py
|
@ -206,7 +206,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
elif (dn.startswith('aid=') or dn.startswith('cid=') or dn == base_dn) and not parent.has_key(dn):
|
||||
parent[dn] = new_cransldapobject(self, dn, ldif = attrs)
|
||||
allmachines = []
|
||||
for dn,mlist in machines.items(): # on associe propriétaires et machines
|
||||
for dn,mlist in machines.iteritems(): # on associe propriétaires et machines
|
||||
parent[dn]._machines = mlist
|
||||
for m in mlist:
|
||||
m._proprio = parent[dn]
|
||||
|
@ -452,8 +452,8 @@ class CransLdapObject(object):
|
|||
|
||||
self.mode = mode
|
||||
|
||||
self.attrs = {} # Contient un dico uldif qui doit représenter ce qui
|
||||
# est dans la base
|
||||
self.attrs = attributs.AttrsDict(conn) # Contient un dico uldif qui doit représenter ce qui
|
||||
# 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
|
||||
|
||||
|
@ -464,10 +464,10 @@ class CransLdapObject(object):
|
|||
|
||||
orig = {}
|
||||
if ldif:
|
||||
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 = False)
|
||||
self.attrs = attributs.AttrsDict(conn, ldif, check_ctxt = False)
|
||||
else:
|
||||
self.attrs = ldif
|
||||
self._modifs = ldif_to_uldif(ldif)
|
||||
self._modifs = ldif_to_cldif(self._modifs, conn, check_ctxt = False)
|
||||
orig = ldif
|
||||
|
@ -476,15 +476,15 @@ class CransLdapObject(object):
|
|||
res = conn.search_s(dn, 0)
|
||||
if not res:
|
||||
raise ValueError ('objet inexistant: %s' % dn)
|
||||
self.dn, self.attrs = res[0]
|
||||
self.dn, res_attrs = res[0]
|
||||
|
||||
# L'objet sortant de la base ldap, on ne fait pas de vérifications sur
|
||||
# l'état des données.
|
||||
self.attrs = attributs.AttrsDict(conn, res_attrs, check_ctxt = False)
|
||||
|
||||
# Pour test en cas de mode w ou rw
|
||||
orig = res[0][1]
|
||||
|
||||
self.attrs = ldif_to_uldif(self.attrs)
|
||||
# L'objet sortant de la base ldap, on ne fait pas de vérifications sur
|
||||
# l'état des données.
|
||||
self.attrs = ldif_to_cldif(self.attrs, conn, check_ctxt = False)
|
||||
self._modifs = ldif_to_cldif(ldif_to_uldif(res[0][1]), conn, check_ctxt = False)
|
||||
|
||||
# Je m'interroge sur la pertinence de cette partie, je pense qu'elle n'est
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue