From c41aac0de0e069a781f1e885808391ccfe17229c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Elliott=20B=C3=A9cue?= Date: Mon, 14 Apr 2014 03:21:56 +0200 Subject: [PATCH] [objets] Bug en cas d'annulation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * self._modifs = self.attrs met les deux AttrsDict dans le même état, ce qui fait qu'une modif de l'un se répercute sur l'autre. * On en profite pour créer une fonction .cancel --- objets.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/objets.py b/objets.py index 2039df8..ec2260a 100644 --- a/objets.py +++ b/objets.py @@ -431,7 +431,7 @@ class CransLdapObject(object): except Exception as error: # On nettoie les locks self.conn.lockholder.purge(self.lockId) - self._modifs = self.attrs + self.cancel() raise EnvironmentError("Impossible de modifier l'objet, peut-être n'existe-t-il pas ? %r" % error) # On programme le redémarrage des services @@ -440,6 +440,13 @@ class CransLdapObject(object): # Vérification des modifications. self.check_modifs() + def cancel(self): + """ + Annule les changements en attente + """ + old_uldif = lc_ldap.ldif_to_uldif(self.conn.search_s(self.dn, ldap.SCOPE_BASE)[0][1]) + self._modifs = attributs.AttrsDict(self.conn, old_uldif, Parent=self) + def check_modifs(self): """ Fonction qui vérifie que les modifications se sont bien