Commit graph

200 commits

Author SHA1 Message Date
Valentin Samir
ca170c19f4 Ajout de methodes pour tester l'égalité d'objets ou d'attributs,
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
2014-02-13 22:34:00 +01:00
Valentin Samir
39635670e0 [attributs] Ajout de l'attribut rewriteMailHeaders comme boolAttr 2014-02-03 18:43:22 +01:00
Valentin Samir
25476fd42d [attributs] canonicalAlias est optionnel dans la base ldap 2014-02-03 18:42:50 +01:00
Pierre-Elliott Bécue
d2aebebd2a [attributs] Si on oublie les parenthèses… 2014-01-29 00:53:49 +01:00
Pierre-Elliott Bécue
8ef8ba04a0 [attributs] On ajoute un attribut gpgMail spécifique
* 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)
2014-01-29 00:37:11 +01:00
Valentin Samir
aebe4613e4 [attributs, ...] __getitem__ et __setitem__ pour les attibut dont la valeur est un dictionnaire
donc pour blacklist et pour article pour le moment
2013-11-22 16:51:40 +01:00
Valentin Samir
ad58564193 [attributs] Valeurs par defaut en unicode 2013-11-19 19:00:00 +01:00
Valentin Samir
ba3898f26d [attributs, objets, lc_ldap] Création de factures 2013-10-11 18:46:26 +02:00
Daniel STAN
f199947a5d clubs: regex moins chiante sur les noms 2013-10-07 01:02:47 +02:00
Valentin Samir
4af481aeef host est unique et check_uniqness a la creation 2013-08-26 13:33:51 +02:00
Valentin Samir
c38d693d76 [attributs] Valeur par defaut pour ip et mdp wifi 2013-08-26 13:33:24 +02:00
Pierre-Elliott Bécue
c2968c6b15 [lc_ldap] On met en place un système de propagation de certaines modifications.
* 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.
2013-07-04 02:06:13 +02:00
Valentin Samir
9540bc572c Search by unicode 2013-07-02 14:42:59 +02:00
Pierre-Elliott Bécue
e18e5222b7 [Oops] J'ai oublié de commiter un de mes débugs. 2013-06-13 20:34:59 +02:00
Daniel STAN
2bf07035ab [historique.get_datetime] inversion des args
args !
2013-06-06 00:46:11 +02:00
Daniel STAN
66be47e496 [attributs] méthode de conversion en datetime
Parce que ça fait plusieurs fois que j'en ai besoin donc je pense que ça sera
handy !
2013-06-06 00:22:14 +02:00
Pierre-Elliott Bécue
616acdbb7a [global] On diminue le risque de lock résiduel, et on corrige une faille des fonctions new[A-Z]*
* 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é.
2013-05-30 18:44:15 +02:00
Pierre-Elliott Bécue
d6efff30de [ldap_locks] Mise en place des locks. Cf commentaires pour les détails.
* 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.
2013-05-30 15:22:11 +02:00
Pierre-Elliott Bécue
cd75ed7bd4 [global/rid] Commit associé à http://git.crans.org/?p=usr-scripts.git;a=commit;h=a442fd6b22c400800e7c5bd870e83e4027a1d76f
* 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)
2013-05-30 01:20:49 +02:00
Pierre-Elliott Bécue
60ded9f830 [global] Passage à tout unicode et quelques corrections mineures.
* Typos
 * Docstrings unicode
 * Erreurs unicode
 * Ajout de _post_delete et _post_create
 * ?
2013-05-27 23:26:53 +02:00
Vincent Le Gallic
db7d41d967 Split de lc_ldap.py en lc_ldap.py et objets.py + création du wrapper shortcuts.py
Ça permet de faire les choses sales du genre os.getenv("SUDO_USER") ou import_secrets
dans le wrapper et pas dans le binding même.
2013-05-16 07:00:47 +02:00
Vincent Le Gallic
ec5de5834b On surcharge pas __repr__ comme des gros sales. 2013-05-16 02:45:44 +02:00
Vincent Le Gallic
c392a2a986 On utilise un champ ldap_name pour savoir quelle classe doit être utilisée pour instancier quel objet/attribut LDAP.
Et comme ça on fiche à la poubelle le dégueulasse globals() et on décorrelle les noms
des classes des noms LDAP.
2013-05-15 23:00:17 +02:00
Pierre-Elliott Bécue
294f7ce949 [attributs] On rajoute du contexte 2013-05-15 22:35:43 +02:00
Pierre-Elliott Bécue
efdd7a5cbe [attributs] a, b = [a,b] mieux que a, b = [a,b][0], [a,b][1] 2013-05-15 16:48:18 +02:00
Pierre-Elliott Bécue
7c2db3dc98 [attributs] Les mails ne sont pas tous en @crans.* 2013-05-15 16:43:16 +02:00
Pierre-Elliott Bécue
89a43cc49a [attributs] mail est multivalué, etudes est optionnel, et solde peut être <0 2013-05-15 00:15:45 +02:00
Valentin Samir
92c4dedfb3 [attributs] On affiche le nom de l'attribut quand on lève une SingleValueError 2013-05-14 23:31:48 +02:00
Valentin Samir
03af7098e8 [attributs.positionBorne] La précision est variable et on ne stocke que 2 float sans °N ou °E (peut être à revoir) 2013-05-14 23:29:40 +02:00
Valentin Samir
3d73191b08 [attributs.controle] controle est optionnel 2013-05-14 23:29:12 +02:00
Valentin Samir
8ded247691 [attributs.ipsec] Avant la clef faisait 22 char 2013-05-14 23:27:59 +02:00
Valentin Samir
2bb29aac36 [attributs] On vérifie chaque composane du nom de domaine.
À charge de vérifier que le nom de domaine appartient bien à l'une
des zones dns du crans.
2013-05-14 18:02:01 +02:00
Valentin Samir
e38aac75bf [attributs.shell] Ajout d'un shell 2013-05-14 18:00:41 +02:00
Valentin Samir
cc0f6e0a91 Antagonisme entre un attribut et sa valeur textuelle 2013-05-14 18:00:00 +02:00
Vincent Le Gallic
d47b2febc7 [attributs.py] On génère CRANS_ATTRIBUTES plutôt que de le hardcoder.
C'est dommage que j'aie pas le droit de faire un dico en compréhension…
2013-05-14 17:37:34 +02:00
Valentin Samir
b9fd6bbb91 [dnsAttr] On verifie que le domaine existe, les nom commençant par une chiffre sont valident
par exemple 4chan.org.
Si on ne vérifie pas le domaine, on permet à l'utilisateur de mettre
des points dans les noms de machines, ce qui n'est pas souhaitable.
2013-05-13 20:06:46 +02:00
Valentin Samir
ed140bf4b5 [attributs] ip4_of_rid mange un entier ou un string 2013-05-10 01:38:30 +02:00
Valentin Samir
2a4037d39c [attributs] Expression régulière pour ne pas accepter sur un sous mot d'un nom de machine 2013-05-09 21:10:17 +02:00
Vincent Le Gallic
59daf777e8 regex pour les noms de machine RFC-compliant 2013-05-09 17:20:13 +02:00
Valentin Samir
68ba8ebd9f [attributs, lc_ldap] Gros hack sale. Ça serait peut être mieux d'avoir des unicodes vraiment partout. 2013-05-08 04:05:42 +02:00
Valentin Samir
4d550e734b [lc_ldap, attributs] Oublis 2013-05-08 04:05:04 +02:00
Pierre-Elliott Bécue
b5a6062c44 [lc_ldap] Changement de protocole dans la création des objets
* _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
2013-05-08 02:18:13 +02:00
Pierre-Elliott Bécue
af109e8c61 [lc_ldap] attrify ne reçoit plus de ldif, donc _create_entity doit changer
On en profite pour virer ldif_to_cldif, et pour donner une fonction
.items à AttrsDict
2013-05-05 10:45:15 +02:00
Pierre-Elliott Bécue
a7d3af3ca1 [lc_ldap/attributs] ns1.crans.ens-cachan.fr n'était pas un nom d'hôte valide. 2013-05-05 05:41:36 +02:00
Pierre-Elliott Bécue
7bc1f4daaa [lc_ldap/attributs] On rajoute quelques attributs du schéma non implémentés 2013-04-15 16:10:39 +02:00
Valentin Samir
4f1dcce982 [attributs] ipv6_of_mac mange des strings et pas des instances d'Attrs 2013-04-10 10:51:55 +02:00
Pierre-Elliott Bécue
180c17baed [global] On jette ctxt_check, et les ldifs qui traînent partout, qu'on remplace.
* 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
2013-04-08 00:12:00 +02:00
Pierre-Elliott Bécue
60ea18d180 [attributs] rm -f check_users_restrictions 2013-04-06 14:41:08 +02:00
Pierre-Elliott Bécue
93d5a11d66 [lc_ldap] On vérifie désormais que $dude peut modifier les attributs.
Les principales modifs touchent __setitem__, il faut voir s'il n'y a pas mieux
pour les histoires de cardinalité, quitte à réécrire des choses. Par ailleurs,
j'ai l'impression que le test sur les attributs nécessaires/optionnels
ne sert à rien, il faut voir comment on veut gérer ça.
2013-04-03 02:51:46 +02:00
Valentin Samir
b957a41cd7 On n'oublie de retourner aussi les valeurs déjà attrifiées 2013-04-01 23:07:23 +02:00