* Quand on modifie un attribut qui devrait en modifier d'autres, on peut
invoquer check_changes pour voir ce qui devrait être changé, puis
validate_changes pour rendre ces changements effectifs. Il ne reste plus
qu'à appeler save pour enregistrer le tout.
* Correction de petits problèmes sur les locks : quand save réussissait,
ils n'étaient pas virés.
* En cas d'erreur au create ou au save, on supprime les locks malgré tout
* Les fonctions new* modifiaient directement le dico qu'on leur passait en
argument, on fait désormais une copie de celui-ci, de façon à ce que test.py
n'instancie pas toujours le même objet en croyant instancier des objets
différents à chaque fois
* Cela permet de trouver une typo dans services.py
* crans_utils a été un peu corrigé.
* Malheureusement lc_ldap._create_entity et objet.create sont un peu
sales, mais j'ai pas trouvé mieux.
* L'historique contient désormais les secondes.
* Maintenant, on va pouvoir identifier formellement les machines v6-only et les autres, sans perdre
la possibilité de passer de l'une à l'autre rapidement (avec les changements qui vont bien)
Lors de la création d'un nouvel objets :
* On à besoin des attributs pour le créer
* On a besoin de l'objet pour créer ses attributs
(si on veux faire la vérification commentée)
À priori, c'est juste temporaire.
* Par défaut, on préfère que le binding crashe si des enfants d'un adhérent ne sont pas
des machines et ne sont pas gérés par le binding que de les détruire
* objet.delete ne permet donc par défaut que de détruire l'objet, et pour proprio, on
surcharge pour détruire les machines
* _create_entity a été changée pour récupérer des dicos de valeurs encodées,
on adapte les méthodes new* en virant les uldifs, et en rendant l'historique
non unicode.
* Ipsec est facultatif, donc on le crée après avoir instancié la machine, que
l'on souhaite instancier le plus tôt possible, et on en laisse la gestion
à attributs, pour le parsage etc
On remarquera que là, ce n'est pas l'objet (propritaire de l'attribut)
qui est passé à attrify mais le ldif de l'objets. La raison est que
lors de la création d'un objets celui-ci n'existe pas encore et que l'on
a cependant besoin d'informations contenue dans le ldif.
Pour le moment la substitution semble parfaitement transparente.
* Les ldifs sont remplacés par un pointeur vers l'objet propriétaire des attributs
* Le test de cardinalité est fait lors du setitem dans AttrsDict
* Le test d'unicité dans le setitem d'un CransLdapObject.
Le setitem vérifie également qu'on affecte pas des attributs non désirés à un objet