On peut désormais utiliser objet.nom de la même manière que objet["nom"]
This commit is contained in:
parent
fd97ff0940
commit
88ffb2f347
1 changed files with 21 additions and 0 deletions
21
lc_ldap.py
21
lc_ldap.py
|
@ -393,6 +393,18 @@ class CransLdapObject(object):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return default
|
return default
|
||||||
|
|
||||||
|
def __getattribute__(self, attr):
|
||||||
|
"""Essentiellement un wrapper pour __getitem__
|
||||||
|
On peut donc utiliser objet.attributLdap de la même manière que objet.["attributLdap"]"""
|
||||||
|
# hack
|
||||||
|
try:
|
||||||
|
return super(CransLdapObject, self).__getattribute__(attr)
|
||||||
|
except AttributeError:
|
||||||
|
try:
|
||||||
|
return self.__getitem__(attr)
|
||||||
|
except KeyError:
|
||||||
|
raise AttributeError(u"'%s' object has no attribute '%s'" % (self.__class__.__name__, attr))
|
||||||
|
|
||||||
def __getitem__(self, attr):
|
def __getitem__(self, attr):
|
||||||
if self.mode in [ 'w', 'rw' ]:
|
if self.mode in [ 'w', 'rw' ]:
|
||||||
return [ v for v in self._modifs[attr] ]
|
return [ v for v in self._modifs[attr] ]
|
||||||
|
@ -407,6 +419,15 @@ class CransLdapObject(object):
|
||||||
return attr in self.ofields or attr in self.xfields or\
|
return attr in self.ofields or attr in self.xfields or\
|
||||||
attr in self.ufields or attr in self.mfields
|
attr in self.ufields or attr in self.mfields
|
||||||
|
|
||||||
|
def __setattr__(self, attr, value):
|
||||||
|
"""Essentiellement un wrapper pour __setitem__
|
||||||
|
On peut donc utiliser objet.attributLdap = bidule de la même manière que objet.["attributLdap"] = bidule"""
|
||||||
|
# On n'utilise __setiitem__ que si l'attributLdap existe déjà
|
||||||
|
if self.has_key(attr):
|
||||||
|
return self.__setitem__(attr, value)
|
||||||
|
else:
|
||||||
|
return object.__setattr__(self, attr, value)
|
||||||
|
|
||||||
def __setitem__(self, attr, values):
|
def __setitem__(self, attr, values):
|
||||||
if self.mode not in ['w', 'rw']:
|
if self.mode not in ['w', 'rw']:
|
||||||
raise ValueError("Objet en lecture seule")
|
raise ValueError("Objet en lecture seule")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue