[objets] Libération du lock en cas d'opération involutive sur un attribut non concurrent

Par exemple :
   adh['solde'][0]+=2 # acquisition du lock
   adh['solde'][0]-=2 # libération du lock
This commit is contained in:
Valentin Samir 2014-11-08 17:28:37 +01:00
parent 177134b6c9
commit 24721ddc98

View file

@ -611,6 +611,9 @@ class CransLdapObject(object):
for attribut in self._modifs.get(attr, []): for attribut in self._modifs.get(attr, []):
if attribut.unique and not attribut in attrs_before_verif and not attribut in attribut.unique_exclue: if attribut.unique and not attribut in attrs_before_verif and not attribut in attribut.unique_exclue:
self.conn.lockholder.removelock(attr, str(attribut), self.lockId) self.conn.lockholder.removelock(attr, str(attribut), self.lockId)
# Si on remet la valeur antérieure au lock, on le libère
if not attribut.concurent and self._modifs.get(attr, []) != self.attrs.get(attr, []) and attrs_before_verif == self.attrs.get(attr, []):
self.conn.lockholder.removelock("dn", "%s_%s" % (self.dn.replace('=', '-').replace(',','_'), attr), self.lockId)
# On met à jour self._modifs avec les nouvelles valeurs # On met à jour self._modifs avec les nouvelles valeurs
self._modifs[attr] = attrs_before_verif self._modifs[attr] = attrs_before_verif