[objets] Bug en cas d'annulation

* 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
This commit is contained in:
Pierre-Elliott Bécue 2014-04-14 03:21:56 +02:00
parent 35f9c36461
commit c41aac0de0

View file

@ -431,7 +431,7 @@ class CransLdapObject(object):
except Exception as error: except Exception as error:
# On nettoie les locks # On nettoie les locks
self.conn.lockholder.purge(self.lockId) 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) raise EnvironmentError("Impossible de modifier l'objet, peut-être n'existe-t-il pas ? %r" % error)
# On programme le redémarrage des services # On programme le redémarrage des services
@ -440,6 +440,13 @@ class CransLdapObject(object):
# Vérification des modifications. # Vérification des modifications.
self.check_modifs() 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): def check_modifs(self):
""" """
Fonction qui vérifie que les modifications se sont bien Fonction qui vérifie que les modifications se sont bien