diff --git a/objets.py b/objets.py index a5bdf5e..59d4bb7 100644 --- a/objets.py +++ b/objets.py @@ -368,7 +368,7 @@ class CransLdapObject(object): login = self.conn.current_login if self.mode not in ['w', 'rw']: raise EnvironmentError("Objet en lecture seule, réessayer en lecture/écriture") - if not self.may_be(variables.deleted, self.conn.droits): + if not self.may_be(variables.deleted, self.conn.droits + self.conn._check_parent(self.dn) + self.conn._check_self(self.dn)): raise EnvironmentError("Vous n'avez pas le droit de supprimer %s." % self.dn) if not self.in_context: # forcer l'utilisation d'un context manager permet d'être certain que les locks seront libéré quoi qu'il arrive @@ -936,7 +936,7 @@ class machine(CransLdapObject): login = self.conn.current_login if self.mode not in ['w', 'rw']: raise EnvironmentError("Objet en lecture seule, réessayer en lecture/écriture") - if not self.may_be(variables.deleted, self.conn.droits): + if not self.may_be(variables.deleted, self.conn.droits + self.conn._check_parent(self.dn)): raise EnvironmentError("Vous n'avez pas le droit de supprimer %s." % self.dn) for certificat in self.certificats(): certificat.delete(comm, login)