Commit graph

108 commits

Author SHA1 Message Date
Valentin Samir
06ea17715b [objets.setitem] Varification de l'unicité de l'attribut sur l'objet
Sinon ldap il est pas content
2014-02-26 10:27:02 +01:00
Valentin Samir
15f92fbf21 [objets.facture] Sucre syntaxique 2014-02-24 21:44:34 +01:00
Valentin Samir
ac0445b7e3 [objets.__setitem__] On libère les locks des valeurs que l'on oublie 2014-02-24 21:44:00 +01:00
Valentin Samir
955a4f2820 [lc_ldap, objets] Création des objets ldap avec un lockid bien a eux 2014-02-24 21:40:03 +01:00
Valentin Samir
9aa0de6539 Travaux sur les locks, ajout de context manager pour les cransLdapObject
D'une façon général, on s'assure que tous les locks concernant un cransLdapObject
sont bien mis avec l'identifiant de lock cransLdapObject.lockId.
Avant d'entrer dans le context manager du cransLdapObject, on fait bien attention
d'intercepter les exceptions pouvant être levée pour libérer les locks potentiellement
déjà posés avant de propager l'exception.

Si on essayer d'appeler une methode d'enregistrement (.save() .delete() .create()) sans
utiliser un context manager, on affiche un warning sur stderr.

À terme ça serait bien de n'utiliser que des context manager pour être sûr qu'on ne
laisse pas de lock traîner dans la base de donnée.

Il faut bien sûr faire attention de bien ajouter les lock avec l'identifiant cransLdapObject.lockId
puisqu'on se base là dessus pour les libérer.

Si on a utiliser une context manager, en en sortant, on rend le cransLdapObject read only
(de façon douce en modifiant le cransLdapObject.mode et de façon force en changeant les methodes
save create delete pour lever l'exception EnvironmentError("Hors du context, impossible de faire des écritures"))
2014-02-24 14:48:03 +01:00
Valentin Samir
a485d4b8b2 [objets] Impossible de supprimer un adhérent respo ou imprimeur d'un club 2014-02-24 11:45:52 +01:00
Valentin Samir
fefad357fc [attributs, objets] Affinage des permissions sur les certificats 2014-02-23 16:06:11 +01:00
Valentin Samir
626851baca [objets, attributs] Vérifications de contraintes liées au certificats d'un machine 2014-02-23 15:29:26 +01:00
Valentin Samir
99ba3a8915 [lc_ldap, objets] vivent les __repr__ 2014-02-23 00:02:00 +01:00
Valentin Samir
43f4ba650a Cas d'un attribut binary
C'est un peu moche comme on s'est efforcé que dans lc_ldap tout soit un unicode et que
unicode n'a pas de sens pour un objet binaire. Avec le champ python_type = str sur les
attributs bianire, ça a tout de même l'air d'aller.
2014-02-22 23:09:29 +01:00
Valentin Samir
44936fde9d Ajout d'objets certifcats comme enfant des objets machine 2014-02-22 23:01:56 +01:00
Valentin Samir
8eb8aa2ba6 sur les methodes .proprio() et .machines() possibilité de spécifier un mode différent 2014-02-22 19:02:54 +01:00
Valentin Samir
b882c41683 Ajout des méthodes __ne__ sur les cransLdapObjet et Attr pour tester le non égalité 2014-02-21 18:02:02 +01:00
Valentin Samir
592cd16357 Fonction de hash pour les cransLdapObject. Seulement en ro. En rw on lève une exception.
En effet, python n'aime pas que les objets multables soient utilisé dans des sets
ou comme clef de dictionnaire, du coup, on va essayer de ne pas le contrarier.
De toute façon, c'est logique vu que la valeur du hash change si on édite l'objet.
2014-02-21 18:00:19 +01:00
Valentin Samir
cf4c63de70 [objets] Simplification de paiement_ok carte_ok et cie du à l'ajouts de methdes sur Attr cette dernière semaine. 2014-02-19 19:04:34 +01:00
Valentin Samir
fa8aef7d18 [objets] "Proposer de filtrer les blacklistes avec un arg supplémentaire ?" c'est fait 2014-02-19 19:03:36 +01:00
Valentin Samir
840cef04c7 [objets/machine] Pour blacklist_actif on appel plutôt super().blacklist_actif au lieu de la réimplémenté 2014-02-19 19:02:41 +01:00
Valentin Samir
03c45b8889 [attributs, objets] Possibilité d'utiliser directement les methodes sur les liste renvoyé par __getitems__ sur un cransLdapObjet
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.
2014-02-14 02:14:44 +01:00
Valentin Samir
aea8e9d974 [attributs] assert value is not only unicode but can also be of the specified python type 2014-02-14 00:45:12 +01:00
Valentin Samir
0486929a5a [objets] Propagation du default donné par .get dans .__getitem__ 2014-02-14 00:39:12 +01:00
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
fb600ec478 [cransldapopbject] On peuple les objectClass même pour associationCrans (qui contient organizationalUnit)
mais on force le mode en read only
2014-02-12 00:51:13 +01:00
Valentin Samir
faeb3651dd [objets] Ajout d'attributs à cransAccount. Les club aussi peuvent avoir un compte crans. 2014-02-03 18:44:13 +01:00
Valentin Samir
f4730bb6ea Un fonction pour générer des objets machine lc_ldap à partir du dump des annonces sap dans /usr/scripts
Ç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.
2014-02-03 00:15:18 +01:00
Pierre-Elliott Bécue
592394a030 [objets] Arrivée de gpgMail dans les attributs des adherents, et petite correction
* Petite correction : Quand on est en mode write, on get dans _modifs, mais on
 vérifiait pas avec un has_key qu'on pouvait bien.
2014-01-29 00:56:04 +01:00
Pierre-Elliott Bécue
395cf90fbc Killing trailing spaces 2014-01-29 00:55:48 +01:00
Valentin Samir
0c157efaae [factures] GROS HACK pour rester comptatible avec ldap_crans où l'article representant les frais n'est ajouté qu'une fois le paiement reçu 2014-01-26 03:21:44 +01:00
Valentin Samir
5504700dee [objets, shortcuts] Cimetière de test quand on est sur la base de test 2013-11-24 20:12:28 +01:00
Valentin Samir
45faa88482 [objets/proprio] Methode pour récupérer la liste des factures du proprio 2013-11-20 17:41:06 +01:00
Valentin Samir
16deec183d Affichage des factures 2013-11-20 17:18:48 +01:00
Valentin Samir
a067656f18 [objets] repr pour la classe AssociationCrans 2013-11-20 16:28:41 +01:00
Valentin Samir
b64a67a24e [objets] methode display() pour afficher textuellement un objet 2013-11-20 16:28:12 +01:00
Valentin Samir
3cc010d180 [paiement_ok/carte_ok/access_ok] paiement ne s'occupe que du paiement, introduction de access_ok 2013-11-19 18:59:07 +01:00
Valentin Samir
7808221099 [objets] __repr__ plus parlant pour proprio et machine 2013-11-18 00:46:08 +01:00
Valentin Samir
2a6f5d6a9a [services] Redémarrage des services object lors de la creation ou suppression d'un objet
À contrario des services attributs dépendant qui eux marchait déjà très bien,
je pense donc à del_user, home, et mail_bienvenue
2013-11-18 00:42:39 +01:00
Valentin Samir
007bfeb54e [ressucite] On donne un nouvel id si l'id est déjà pris et on vérifie l'unicité seulement au moment d'enregistrer l'objet
par id j'entends aid, cid, fid, mid, tout ce que apparait dans un dn et qu'on ne
peut normalement par modifier tout seul après.
2013-11-17 20:22:07 +01:00
Valentin Samir
731ee0221b [object] Import devenu inutile 2013-11-10 16:40:52 +01:00
Valentin Samir
85838af072 Purge locks sur modifications : erreur plus parlante 2013-11-10 16:40:28 +01:00
Valentin Samir
8ecd689289 [create] On libère les locks dans tous les cas, en particulier si une erreur est levée 2013-10-23 16:38:41 +02:00
Valentin Samir
ba3898f26d [attributs, objets, lc_ldap] Création de factures 2013-10-11 18:46:26 +02:00
Valentin Samir
f7036290d5 [object] Blacklist virtuelle pour les gens non à jour du paiement 2013-10-08 10:17:56 +02:00
Valentin Samir
4af481aeef host est unique et check_uniqness a la creation 2013-08-26 13:33:51 +02:00
Valentin Samir
625a1dbf94 [lc_ldap] paiement_ok même en periode transitoire avec bl_carte_et_definitif à True 2013-08-23 14:04:07 +02:00
Pierre-Elliott Bécue
aeb1a8086f [objets.py] OK, I WILL EXPLAIN, DUDE !
* Quelques commentaires sur mon workaround pour les attributs liés.
2013-08-03 18:10:37 +02:00
Daniel STAN
4fbd45b66c [objects] check_changes renvoie toujours
comme mon estomac
2013-07-16 20:11:30 +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
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
Valentin Samir
00a8e001e1 [proprio.__init__] On ne prend plus de liste de machines à l'initialisation
Ça n'est pas utilisé, et je ne sais pas pourquoi, mais ça initialise
self._machine avec objets.machine au lieu de None du coup, je le retire.
Je fais de même pour self._clubs et self._imprimeur_clubs par
homogénéité.
2013-06-03 17:52:47 +02:00