Commit graph

81 commits

Author SHA1 Message Date
Pierre-Elliott Bécue
a42fa0188d Possibilité d'afficher plus ou moins de blacklistes et d'histo 2014-09-01 03:45:29 +02:00
Pierre-Elliott Bécue
3fdb4b1936 Adh glissantes : on vérifie que le recuPaiement est fourni 2014-08-29 02:42:08 +02:00
Pierre-Elliott Bécue
50f91c63e0 Correctifs sur les adhésions glissantes. 2014-08-25 19:17:10 +02:00
Pierre-Elliott Bécue
7f1ffbeed5 Passage aux adhésions glissantes (partie 2/2, lc_ldap) 2014-08-15 20:27:47 +02:00
Pierre-Elliott Bécue
e47641e756 [objets] Sémantique de carteEtudiant non respectée 2014-08-15 03:30:02 +02:00
Pierre-Elliott Bécue
d66c12c013 [lc_ldap] Adaptations suite aux modifs du schéma et bugfixes 2014-08-15 01:13:04 +02:00
Pierre-Elliott Bécue
aa1c77ce60 [objets] Un peu plus de clarté sur le repr d'un adhérent, et sur __setitem__ 2014-04-14 03:23:47 +02:00
Pierre-Elliott Bécue
c41aac0de0 [objets] Bug en cas d'annulation
* self._modifs = self.attrs met les deux AttrsDict dans le même état,
 ce qui fait qu'une modif de l'un se répercute sur l'autre.
 * On en profite pour créer une fonction .cancel
2014-04-14 03:21:56 +02:00
Pierre-Elliott Bécue
35f9c36461 [lc_ldap/clubs] La mise en place des clubs dans l'intranet a été faite trop tôt.
* Aucun système de droit permettant au responsable de modifier club/machines de club
 n'avait été mis en place. C'est corrigé.
2014-04-03 17:30:09 +02:00
Valentin Samir
13200e9a74 [objets/facture] Factures éditables via lc_ldap modulo l'édition du solde de sont propriétaire
L'idée étant d'essayer d'avoir un fonction 'crediter' qui va éditier le solde de sont parent
puis sauvegarder/creer la facture de la fonçon la plus atomique possible.
Il faudarait voir s'il y a quelque chose de plus propre pour rendre tout ça un peu plus
atomique
2014-03-23 20:38:06 +01:00
Valentin Samir
a925f14036 [objets] Fonction pour tester l'existance de l'objet dans la base ldap
En l'utilisant, on pourait peut être fusionner les fonction save et create ?
2014-03-23 20:37:18 +01:00
Valentin Samir
8171455f4b [objets] Utilisation de self[] au lieu de self.attrs[] 2014-03-21 09:18:47 +01:00
Valentin Samir
560f9a2694 [objets] Ajout d'attributs à supprimer lors de la suppression d'un compte crans 2014-03-21 09:18:08 +01:00
Valentin Samir
ed3b43073c [objets] Méthode pour donner les droits de l'utilisateur courrant un cransLdapObject
On en profite pour simplifier les appels à may_be
2014-03-21 09:12:31 +01:00
Valentin Samir
8a6e93a38a [objets] Methode pour mettre à jour la liste attribs des attributs possible de l'objets
La méthode est apprlé dès que attrs et _modis sont instancié et avant les vérifications
sur la correction des attributs.
Cela permet d'utiliser des objet "Auxilière" dans ldap plus facilement.
2014-03-18 22:47:35 +01:00
Valentin Samir
72e35bcb32 [attributs, crans_utils, objets] Ajout d'attributs encrypted, privatekey, csr et objectClass privateKey
On peut générer/ajouter des clefs privées via gest_crans_lc. Elles sont forcément chiffré avec une
passphrase. Pour les machines crans, elle est dans /etc/crans/secrets. Pour les autres machines
elle n'est pas connue du crans et demandée à l'utilisateur lorsqu'il y a besoin de la clef privée
pour des opérations.
Du coup, on peut générer des csr automatiquement dans gest_crans_lc, ça m'a l'air bien pratique,
ça évite d'oublier des subjectAltName par exemple quand on renouvel le certificat comme les
nom du certificat sont également dans ldap.
On peut aussi, juste avec une requête ldap voir quels sont les certificats qui vont bientôt
expirer (&(objectClass=x509Cert)(end<int(time.time())+delai)).
2014-03-17 11:26:53 +01:00
Valentin Samir
285d35364a [objets] Dans adherent.machine() possibilité de forcer le rafraîchissement du cache local 2014-03-15 22:47:25 +01:00
Valentin Samir
241f55154e [objets] Création et suppression de compte crans 2014-03-15 22:47:04 +01:00
Valentin Samir
bc751c415b [attributs, objets] Ajout de l'attribut shadowExpire 2014-03-15 22:38:15 +01:00
Valentin Samir
7e55e8325d [attributs, objets] Possibilité d'avoir un attribut unique sauf pour une liste de valeur prédéfini
Je pense particulièrement à chambre qui est unique sauf pour ???? et EXT
On en a besoin pour détecter, quand on affecte quelqu'un a une chambre, que
la chambre est déjà occupée
2014-03-15 22:36:02 +01:00
Daniel STAN
b9f47f5b94 objets: machines destructibles par parent
Aller la dupplication de code aller aller.
2014-03-04 18:47:48 +01:00
Valentin Samir
3e9dc95268 [objets] On calcule le parent_dn, c'est pratique pour tester rapidement si un objets est enfant d'un autre 2014-03-03 10:53:52 +01:00
Valentin Samir
d8b1e5da51 [objets] En cas d'ajout de lock hors contexte, on affiche un warning 2014-02-26 10:27:48 +01:00
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