[objets.setitem] Varification de l'unicité de l'attribut sur l'objet
Sinon ldap il est pas content
This commit is contained in:
parent
8fd2be80c8
commit
06ea17715b
1 changed files with 18 additions and 10 deletions
22
objets.py
22
objets.py
|
@ -501,17 +501,25 @@ class CransLdapObject(object):
|
||||||
# (on peut pas utiliser self._modifs, car il ne faut
|
# (on peut pas utiliser self._modifs, car il ne faut
|
||||||
# faire le changement que si on peut)
|
# faire le changement que si on peut)
|
||||||
attrs_before_verif = [ attributs.attrify(val, attr, self.conn, Parent=self) for val in values ]
|
attrs_before_verif = [ attributs.attrify(val, attr, self.conn, Parent=self) for val in values ]
|
||||||
|
|
||||||
|
# Methode de vérification diverse ayant pour but d'être surcharger
|
||||||
|
# par les classes enfants. Ainsi, elle ne touche pas à __setitem__
|
||||||
|
# qui est assez sensible.
|
||||||
self._check_setitem(attr, attrs_before_verif)
|
self._check_setitem(attr, attrs_before_verif)
|
||||||
if attr in self.attrs.keys():
|
|
||||||
|
# Vérification que (attr, value) est localement unique et
|
||||||
|
# si attr doit être globalement unique, l'unicité globale
|
||||||
|
# Dans ce cas, on ne tiens pas compte de old_attrs cas ils
|
||||||
|
# vont être effacé si le setitem réussi
|
||||||
|
old_attrs = self[attr]
|
||||||
for attribut in attrs_before_verif:
|
for attribut in attrs_before_verif:
|
||||||
attribut.check_uniqueness([unicode(content) for content in self.attrs[attr]])
|
if attrs_before_verif.count(attribut) > 1:
|
||||||
|
raise ValueError("%s en double\n(%s)" % (attribut.legend if attribut.legend else attr, attribut))
|
||||||
|
attribut.check_uniqueness(old_attrs)
|
||||||
|
|
||||||
# On groupe les attributs précédents, et les nouveaux
|
# On groupe les attributs précédents, et les nouveaux
|
||||||
mixed_attrs = attrs_before_verif + self.attrs[attr]
|
mixed_attrs = attrs_before_verif + old_attrs
|
||||||
else:
|
|
||||||
for attribut in attrs_before_verif:
|
|
||||||
attribut.check_uniqueness([])
|
|
||||||
mixed_attrs = attrs_before_verif
|
|
||||||
# Si c'est vide, on fait pas de vérifs, on avait une liste
|
# Si c'est vide, on fait pas de vérifs, on avait une liste
|
||||||
# vide avant, puis on en a une nouvelle après.
|
# vide avant, puis on en a une nouvelle après.
|
||||||
if mixed_attrs:
|
if mixed_attrs:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue