[create] On libère les locks dans tous les cas, en particulier si une erreur est levée
This commit is contained in:
parent
8431e2d19a
commit
8ecd689289
1 changed files with 24 additions and 22 deletions
46
objets.py
46
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue