From 8ecd689289f52ad9b32664240df40d5db60c83f1 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Wed, 23 Oct 2013 16:38:41 +0200 Subject: [PATCH] =?UTF-8?q?[create]=20On=20lib=C3=A8re=20les=20locks=20dan?= =?UTF-8?q?s=20tous=20les=20cas,=20en=20particulier=20si=20une=20erreur=20?= =?UTF-8?q?est=20lev=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- objets.py | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/objets.py b/objets.py index 784ebd8..b14e541 100644 --- a/objets.py +++ b/objets.py @@ -206,29 +206,31 @@ class CransLdapObject(object): """Crée l'objet dans la base ldap, cette méthode vise à faire en sorte que l'objet se crée lui-même, si celui qui essaye de le modifier a les droits de le faire.""" - if login is None: - login = self.conn.current_login - self._check_optionnal(comment="créez") - - self.history_add(login, u"Inscription") - - for attr in self.attrs.keys(): - for attribut in self[attr]: - attribut.check_uniqueness([]) - - # Création de la requête LDAP - modlist = addModlist(self._modifs.to_ldif()) - # Requête LDAP de création de l'objet try: - self.conn.add_s(self.dn, modlist) - except Exception: - print traceback.format_exc() - return - # On nettoie les locks - for key, values in self._modifs.to_ldif().iteritems(): - for value in values: - self.conn.lockholder.removelock(key, value) - self.conn.lockholder.purge(id(self)) + if login is None: + login = self.conn.current_login + self._check_optionnal(comment="créez") + + self.history_add(login, u"Inscription") + + for attr in self.attrs.keys(): + for attribut in self[attr]: + attribut.check_uniqueness([]) + + # Création de la requête LDAP + modlist = addModlist(self._modifs.to_ldif()) + # Requête LDAP de création de l'objet + try: + self.conn.add_s(self.dn, modlist) + except Exception: + print traceback.format_exc() + return + finally: + # On nettoie les locks + for key, values in self._modifs.to_ldif().iteritems(): + for value in values: + self.conn.lockholder.removelock(key, value) + self.conn.lockholder.purge(id(self)) # Services à relancer services.services_to_restart(self.conn, {}, self._modifs)