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:
Valentin Samir 2013-04-01 22:17:27 +02:00
parent cda292dcdb
commit db32b1d65a
2 changed files with 27 additions and 11 deletions

View file

@ -90,6 +90,22 @@ def attrify(val, attr, ldif, conn, ctxt_check = True):
else:
return CRANS_ATTRIBUTES.get(attr, Attr)(val, ldif, conn, ctxt_check)
class AttrsDict(dict) :
def __init__(self, conn, ldif = {}, check_ctxt = True):
super(AttrsDict, self).__init__(ldif)
self._conn = conn
self._ldif = ldif
self._check_ctxt = check_ctxt
def __getitem__(self, attr):
values = super(AttrsDict, self).__getitem__(attr)
if not isinstance(values, list):
values = [ values ]
values = [ attrify(unicode(val, 'utf-8'), attr, self._ldif, self._conn, self._check_ctxt) for val in values]
self[attr] = values
return values
class Attr(object):
"""Objet représentant un attribut.