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)