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
16
attributs.py
16
attributs.py
|
@ -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.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue