diff --git a/lc_ldap.py b/lc_ldap.py index 2a1457a..5607ced 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -393,6 +393,18 @@ class CransLdapObject(object): except KeyError: 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): if self.mode in [ 'w', 'rw' ]: 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\ 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): if self.mode not in ['w', 'rw']: raise ValueError("Objet en lecture seule")