diff --git a/objets.py b/objets.py index 238c522..6f97ada 100644 --- a/objets.py +++ b/objets.py @@ -119,7 +119,7 @@ class CransLdapObject(object): self.attrs = attributs.AttrsDict(conn, Parent=self) # Contient un dico ldif 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 + self._modifs = {} # C'est là qu'on met les modifications self.dn = dn orig = {} @@ -127,7 +127,7 @@ class CransLdapObject(object): self.attrs = attributs.AttrsDict(self.conn, uldif, Parent=self) self._modifs = attributs.AttrsDict(self.conn, uldif, Parent=self) - elif dn != variables.base_dn: + else: res = self.conn.search_s(dn, 0) if not res: raise ValueError ('objet inexistant: %s' % dn) @@ -139,6 +139,9 @@ class CransLdapObject(object): self.attrs = attributs.AttrsDict(self.conn, uldif, Parent=self) self._modifs = attributs.AttrsDict(self.conn, uldif, Parent=self) + if dn == variables.base_dn: + mode = 'ro' + if mode in ['w', 'rw']: if not self.may_be(variables.modified, self.conn.droits + self.conn._check_parent(dn) + self.conn._check_self(dn)): raise EnvironmentError("Vous n'avez pas le droit de modifier cet objet.")