Au lieu d'être obligé de faire à chaque fois obj[attr] = obj[attr] + [val]
on peut faire directement obj[attr].append(val).
Si on affecte obj[attr] à une variable (l=obj[attr])
et que l'on modifie la variable (l.append(val)), a la fois la variable et obj[attr] sont modifié
et maintenue à jour.
Attention toutefois :
l1 = obj[attr]
l2 = obj[attr]
l1 == l2 <=> True
l1.append(val)
l1 == obj[attr] <=> True
l1 == l2 <=> False
l2 == obj[attr] <=> False
et l2.append(val) lèvera une exception.
possibilité de fournir une valeur du bon type python à un attribut
test booléen sur s'attribut propagée à sa valeur.
Le teste d'égalité sur un attribut peut se faire avec la sérialisation de
l'attribut ou le type python qui le représente.
Le teste d'égalité sur les cransLdapObjet se fait sur le dn et ses attributs.
De plus, on peut aussi le testé avec un chaine de caractère :
"host=freebox.crans.org" == MachineCrans(...) renvoie True ssi
MachineCrans(...) a l'attribut host, qu'il est globalement unique et vaut
freebox.crans.org
vala vala
Ça permet d'utiliser des fonctions générique sur les machines lc_ldap
pour s'occuper aussi du multicast. Notamment dans /usr/scripts/gestion/gen_confs/bind2.py
où cela nous permet de générer gratuirement la zone tv.crans.org et son reverse.
This reverts commit a79e0a4113.
Il vaut mieux laisser les imports en tête de fichier dans la mesure du
possible. De plus, cette erreur est plus confortable, car l'apprenti sait
dès le départ qu'il y a un problème. Enfin, ce bout de code try_import
peut servir pour d'autres imports posant des problèmes. On prend cependant
note que try_import pour annuaires_pg n'est pas utile.
* On ne peut pas utiliser mailExt, car on souhaite que cet attribut ne
soit pas en conflit avec les autres attributs de mails (oui, on accepte
la redondance)
On retire la fonction import_secrets. Elle ne semble pas être utilisée
ailleurs.
Normalement, "/usr/scripts" est dans le PYTHONPATH, si ce n'est pas le cas,
l'import va planter. En cas d'erreur, on essaie (temporairement) un second
import en rajoutant d'abord ce path, tout en crachant un truc sur stderr
(histoire de trouver les méchants scripts qui n'ont pas le path de base).
Cette méthode a l'air de moins planter pour trouver le nom de l'utilisateur,
par exemple depuis un initscript qui a nettoyé drastiquement l'environnement.
En réalité je me demande s'il ne vaudrait pas mieux utiliser uniquement
celle-là… À méditer.
Comme expliqué dans le compte rendu de l'internounou du 28 Novembre 2013.
Tout le monde peut importer annuaire_pg, sinon, vu qu'il est également importer
par attributs.py, ça fait longtemps que ça ne marcherait plus.
* Du coup, les apprentis n'ont plus le droit d'utiliser lc_ldap.
* C'est mal.
* Donc, je kludge, mais ça reste crade.
* Il faudra améliorer ça, et arrêter de faire des imports sauvages
nécessitant des droits sans s'être un peu assuré qu'ils ne seront
pas faits si on les a pas.
* Il faudrait donc globaliser la fonction try_import et l'améliorer.
en même temps, on met une fonction pour lister les adherents.
Je ne suis pas trop satisfait de ces fonctions de listing, mais je ne vois pas
vraiement comment faire autrement.