10:53 <tarek_> http://www.gizmodo.fr/2007/10/05/my_tailor_is_chebran.html
14:08 <gawel> matin
14:39 <gawel> ogrisel: cat /etc/afpy/admin_scripts/afpy_backup
14:45 <gawel> j'ai bien bossé
14:45 <gawel> j'ai fait un truc de backup
14:46 <gawel> complété la sync pou l'annuaire ldap
14:46 <gawel> et fait un truc qui envois des mail avec les info ldap
14:46 <gawel> http://svn.afpy.org/portal/afpy.mail/afpy/mail/doctests/ldap.txt
14:47 <gawel> c'est assez sympa
14:54 <gawel> d'ailleurs en complétant le ldap je me suis appercu qu'on avait une bonne baisse de membre
14:55 <gawel> 41 en 2006 contre 33 en 2007
14:57 <gawel> alors qu'il y a plus de 400 inscrit dans le forum
14:57 <gawel> ca me laisse perplexe
14:58 <gawel> je me suis aussi apercu que lgodard avait mis un numéro de tél foireux ;)
15:15 <ogrisel> gawel: matin
15:15 <ameurant> matin de naples
15:15 <ameurant> :)
15:17 <ogrisel> ameurant: cool
15:17 <gawel> le pays des belles brunes
15:18 <gawel> bon appétit
15:18 <ogrisel> gawel: pour les membres effectivement faudrait faire des relances
15:18 <ogrisel> j'ai toujours pas recu le numero IANA
15:19 <ogrisel> mais des que je l'ai je mets en place la nouvelle objectClass
15:19 <gawel> c'est indispensable ce numéro ?
15:20 <yota> non
15:20 <yota> c'est juste si tu veux permettre aux autres de manipuler tes objets
15:21 <yota> j'ai des serveurs ldap avec objet perso depuis des années sans aucun soucis :)
15:21 <ogrisel> non c'est pas indispensable mais c'est plus clean
15:22 <gawel> je vois
15:22 <ogrisel> pour etre sur de ne pas avoir de conflit de nom avec d'autres schemas custom
15:23 <gawel> y a d'autres trucs qu'on aimerais stocker je crois
15:23 <ogrisel> c'est un namespace officiel et unique en qqsorte
15:23 <gawel> - si le mec veut une facture
15:23 <gawel> - les listes ou il veut être
15:23 <ogrisel> ok
15:23 <gawel> et heu, je sais pas, surement d'autres
15:23 <ogrisel> tu peux mettre tout ca sur une page wiki ?
15:23 <gawel> montant cotisé ?
15:24 <gawel> ouais
15:24 <ogrisel> pour les montant cotisé c'est lié aux dates
15:24 <gawel> ouais. relou ?
15:25 <ogrisel> je sais pas si on peut faire des attributs structurés en LDAP
15:25 <ogrisel> je pense pas
15:25 <gawel> c'est ce que je me disais ouais
15:25 <ogrisel> on va faire en sorte qu'une date == une cotise
15:25 <gawel> enfin si tu peux. faudrais que ce soit un sous arbre du membre. ca se complique
15:25 <ogrisel> et que donc on doit avoir le meme nombre de date que le nombre de cotises
15:26 <ogrisel> oui tu as raison
15:26 <gawel> bah ouais, mais un étudiant paye 10 euro, un membre 20 et peut-^tre plus tard un boite 50
15:27 <ogrisel> mais on pourra plus faire de recherche du type : trouvé les inscrits qui ont pas de cotise
15:27 <ogrisel> faut y reflechir effectivement
15:27 <gawel> pourquoi ?
15:27 <ogrisel> tu vois comment ecrire une telle requete ?
15:28 <ogrisel> on peut faire des requete sur les attributs d'un noued, pas sur l'existance et la valeur des attributs des noeuds fils
15:28 <gawel> je sais pas. on sait bien rechercher ceux qui n'ont pas d'attribut. doit y avoir moyen de faire ca avec des sous arbre
15:28 <gawel> bah sur l'existence d'un noeud
15:29 <ogrisel> les requete retourne les noeud eux meme, pas leurs parent
15:29 <gawel> pas faux
15:30 <gawel> au pire tu fais un diff entre les membres et ceux qui on un cotis
15:30 <gawel> c'est pas un truc qu'on ferais toutes les minutes
15:30 <ogrisel> oui
15:31 <gawel> et ca nous permettrais de stocker aussi les dons ou autres
15:31 <gawel> donc sympa quand même
15:31 <ogrisel> oui
15:31 <ogrisel> donc on fait des objectClass 'membership' et 'donation' ?
15:32 <ogrisel> qui seront des fils des fiches des membres ?
15:32 <gawel> un seul objectclass suffirais non ?
15:32 <ogrisel> et ont met a jour une attribut date sur la fiche des membres qui dit juste qu'a quand il est membre
15:32 <gawel> et tu lui colle un attribut type
15:33 <ogrisel> on peut aussi faire comme ca
15:33 <gawel> ptete mieux avec objectclass en fait. c'est indexé
15:34 <ogrisel> un object class 'payment' avec des attributs "date", "amount", "reason"
15:34 <ogrisel> s/"reason"/"object"
15:34 <gawel> et un num de facture tant qu'a faire
15:34 <ogrisel> et dans object on met "student membership", "corporate membership", ..., "donation"
15:34 <ogrisel> oui
15:35 <gawel> (c'est gwen qui veut ça)
15:35 <ogrisel> pour les indexes ont peut mettre ce qu'on veut
15:35 <gawel> ouais, top ça
15:35 <gawel> je sais mais si on évite d'en coller c'est pas plus mal
15:36 <ogrisel> c'est pas compliqué a ajouter et c'est pas comme si on avait de milliers de transactions par secondes niveaux impacte sur les perfs
15:36 <gawel> je sais pas comment réagit python-ldap avec les attribut date
15:36 <gawel> ouaip, certes
15:36 <ogrisel> oui moi non plus
15:36 <ogrisel> au pire c'est des chaine de caracteres parsables
15:37 <gawel> ah oui, je sais ce que je voulais aussi. un champs pour un alias mail
15:37 <ogrisel> bon aller je me fais un café, je choisis un PEN bidon temporairement et j'ecris ce schemas dans /etc/ldap/schemas/afpy.schema
15:37 <ogrisel> ok
15:37 <gawel> yeah :)
15:38 <gawel> t'as vu mon script de backup aussi ?
15:38 <gawel> ca me semble une bonne solut
15:38 <gawel> ca fait les tar avec backup-manager sur py
15:38 <ogrisel> j'ai pas encore regardé mais j'ai vu ton code pour les emails depuis les infos ldap
15:38 <gawel> héhé
15:38 <ogrisel> backup-manager c'est un user ?
15:39 <gawel> non, un soft
15:39 <ogrisel> ah je connais pas
15:39 <gawel> un cron qui tar ce que tu lui dit
15:39 <ogrisel> ok, c'est cool
15:39 <ogrisel> faut mettre les backup dans un repertoire accessible avec un user non root
15:40 <gawel> tout est expliqué :)
15:40 <ogrisel> et donner des clefs ssh pour que les autres box puisse aspirer les backup
15:40 <ogrisel> ah ok je vais lirs
15:40 <gawel> oui :)
15:41 <ogrisel> d'abord café
16:10 <ogrisel> gawel: pour ton script faudrair remplacer scp par rsync
16:10 <ogrisel> sinon tout a l'air ok
16:11 <ogrisel> http://samba.anu.edu.au/rsync/examples.html
16:12 <gawel> bah c'est bien scp
16:13 <gawel> rsync ça sync, ca backup pas vraiment
16:13 <ogrisel> si ca evite de copier les fichiers qui n'ont pas changé
16:13 <ogrisel> ca va beaucoup plus vite
16:14 <gawel> on s'en fou non ?
16:14 <gawel> je veux dire on est de dedibox a dedibox
16:14 <gawel> ca va super vite et on est pas limité en bp
16:15 <ogrisel> c'est juste que c'est plus rapide de faire "rsync -avR" plutot que "scp -r"
16:15 <gawel> cpas super grace je trouve
16:16 <gawel> et ca oblige à install rsync
16:16 <ogrisel> faut juste tester les options (j'ai toujours tendance a me planter :))
16:16 <ogrisel> ok comme tu veux
16:16 <gawel> bien comme ça je trouve
16:16 <gawel> on verra si y a vraiment trop de traffic plus tard
16:16 <gawel> mais la y a pas grand chose
16:16 <ogrisel> j'utilise LDAPStudio pour faire le schema
16:16 <ogrisel> trop bien
16:17 <gawel> je l'ai install ouais. c'est bien foutu
16:27 <gawel> ogrisel: ou tu choppe ssh-copy-id ?
16:28 <gawel> on en parle partout mais je le trouve nul part
16:28 <ogrisel> hum je sais plus 2s
16:29 <gawel> ah il est par défaut dans debian en fait
16:29 <ogrisel> comment on fait pour trouver le paquet debian qui a installer un fichier par son path ?
16:29 <gawel> je cherchais pour mon mac
16:29 <gawel> oula je sais pas
16:29 <ogrisel> dpkg qqchose
16:30 <ogrisel> tiens voila
16:30 <ogrisel> http://pastebin.com/m6f7cf2ca
16:31 <gawel> merci
16:33 <ogrisel> pour info voici le schema dans son etat actuel
16:33 <ogrisel> http://pastebin.com/m22d99b4a
16:33 <ogrisel> je l'ai pas encore testé
16:33 <ogrisel> je vais le tester sur mon localhost avant de le charger sur py.afpy.org
16:33 <ogrisel> si t'as des remarques
16:34 <ccomb> jour'
16:34 <ccomb> pour rsync je confirme c'est carrément mieux pour le backup
16:35 <ccomb> j'utilise rsync --rsh=ssh -arv /home/dossier user@machine:/quelque/part
16:36 <ccomb> et selon les gouts, --delete-after ou --delete-during
16:37 <ccomb> dpkg -S ssh-copy-id
16:37 <ccomb> openssh-client: /usr/bin/ssh-copy-id
16:43 <gawel> -SEARCH
16:43 <gawel> ogrisel: je verrais bien un object class cotis et un "autre"
16:44 <gawel> s/cotis/cotisation/
16:44 <ogrisel> ccomb: merci
16:44 <ogrisel> gawel: trop tard
16:44 <ogrisel> :)
16:44 <gawel> arf :)
16:44 <gawel> tu l'as mis ?
16:44 <ogrisel> pour payment tu veux dire ?
16:44 <gawel> ouais
16:44 <ogrisel> je l'ai corrigé pour qu'il marche dans mon openldap
16:45 <ogrisel> je trouve ca plus simple comme ca
16:45 <gawel> soit, ok
16:46 <ogrisel> on peut faire des requete pour filtrer les donation
16:46 <gawel> ca me parait très bien sinon
16:46 <gawel> yep
16:46 <ogrisel> et le jour ou on recoit du firc pour autre chose on aura pas besoin de changer le schema
16:46 <ogrisel> genre pour nos activités mafieuses
16:46 <gawel> le "autre" aurait été :)
16:47 <gawel> c'était juste pour isoler les cotis. mais ca va
16:47 <ogrisel> :)
16:47 <ogrisel> ok
16:47 <ogrisel> je charge le schema sur py.afpy.org
16:47 <gawel> cool
16:47 <gawel> je vais me coller à la sync
16:48 <gawel> on vas voir comment ca se comporte avec les date
16:48 <ogrisel> ccomb: avec "-arv" comme option /quelque/part contiendra un sous repertoire "dossier" ou pas ?
16:49 <ccomb> je crois que ça dépend si tu mets / à la fin ou pas
16:49 <ccomb> je regarde
16:49 <ogrisel> ah ok
16:52 <ccomb> ah non
16:53 <ccomb> /home/dossier /quelque/part ça copie le contenu de dossier dans part
16:53 <ccomb> donc ça ajoute pas de répertoire "dossier"
16:53 <ccomb> avec / à la fin c'est pareil
17:03 <ogrisel> ok merci ccomb
17:03 <ogrisel> gawel: j'ai chargé le schema et il a l'air de marcher
17:04 <gawel> merde, on a zapé la date de naissance :)
17:04 <ogrisel> mais je sait pas quoi prendre comme rdn pour les paiements
17:04 <ogrisel> c'est important la date de naissance ?
17:04 <gawel> ouais, si le mec est pas majeur
17:04 <ogrisel> pas majeur, pas de chocolat
17:05 <gawel> voila
17:05 <ogrisel> pas de fiche de membre => pas besoin d'attribut si ?
17:05 <gawel> c'est pour lui signifier qu'on accepte pas les paiement allopass
17:05 <gawel> comment ca ?
17:07 <ogrisel> ok je vais ajouter ton birthDate
17:07 <gawel> chouet
17:07 <ogrisel> sinon pour le rdn des payment on prend le paymentDate
17:07 <ogrisel> c'est un generalizedTime
17:08 <ogrisel> donc la syntaxe c'est yyyymmddhhmmssZ
17:08 <gawel> ca me parait pas mal
17:08 <ogrisel> exemple 20070225000000Z c'est ma derniere date de cotise
17:08 <ogrisel> (de memoire)
17:09 <ogrisel> je l'ai testé ca marche
17:09 <ogrisel> DN: paymentDate=20070225000000Z,uid=ogrisel,ou=members,dc=afpy,dc=org
17:09 <ogrisel> invoiceReference est facultatif
17:10 <gawel> donc date + montant ?
17:14 <ogrisel> MUST: paymentDate (RDN), paymentAmount, paymentObject
17:14 <gawel> ok
17:14 <ogrisel> MAY: invoiceReference
17:15 <ogrisel> j'ajoute birthDate
17:16 <ogrisel> done
17:16 <ogrisel> je teste sur ma fiche
17:16 <gawel> on peut mettre 0 dans le montant ?
17:18 <ogrisel> ca marche
17:19 <ogrisel> oui pour le montant on peut mettre ce qu'on veut tant que c'est numerique
17:19 <gawel> cool
17:19 <ogrisel> on peut pe meme mettre des valeures negatives pour des remboursement
17:20 <ogrisel> a tester
17:22 <ogrisel> bon je vais commiter mes changement sur /etc :)
17:27 <ogrisel> gawel: faudrait faire une liste admins@lists.afpy.org en plus de la liste buro
17:27 <ogrisel> avec les logs de commits bzr
17:28 <gawel> j'y pensais ouais
17:28 <ogrisel> si jamais on a des admins qui sont pas dans le buro
17:28 <ogrisel> ca peut arriver y pas de raison
17:28 <gawel> qui sait
17:29 <ogrisel> je vais matter pour mettre un post-commit hook qui envoie des mails pour bzr
17:31 <gawel> pour le svn ca serait bien aussi
17:32 <gawel> cool
17:37 <gawel> faut quoi comme object class pour les membres du coup maintenant ?
17:39 <ogrisel> associationMember en plus de person
17:39 <ogrisel> c'est auxialiary
17:39 <ogrisel> comme ca on peut mettre n'importe quelle autre entrée ldap comme associationMember
17:40 <ogrisel> meme des trucs qui sont pas forcemment des person
17:40 <gawel> associationMember voila :)
17:41 <gawel> j'ai du mal a rajouter des payements la
17:42 <ogrisel> prends exemple sur le mien
17:42 <gawel> non mais en python :)
17:43 <gawel> invalid per syntax
17:44 <gawel> ERROR:root:paymentDate=20071006000000Z,uid=test_user,ou=members,dc=afpy,dc=org {'info': 'objectClass: value #1 invalid per syntax', 'desc': 'Invalid syntax'} {'objectClass': ['top', 'payement'], 'paymentObject': ['personnal membership'], 'payementDate': ['20071006000000Z'], 'paymentAmount': ['0']}
17:44 <gawel> marche pas top :(
17:44 <gawel> déjà python-ldap accept que des strings
17:46 <ogrisel> dn: paymentDate=20070225000000Z,uid=ogrisel,ou=members,dc=afpy,dc=org
17:46 <ogrisel> objectClass: payment
17:46 <ogrisel> objectClass: top
17:46 <ogrisel> paymentAmount: 20
17:46 <ogrisel> paymentDate: 20070225000000Z
17:46 <ogrisel> paymentObject: personnal membership
17:47 <ogrisel> ton objectClass est pas bonne
17:47 <gawel> ha, bien vu
17:48 <gawel> NOT_ALLOWED_ON_NONLEAF: {'info': 'subordinate objects must be deleted first', 'desc': 'Operation not allowed on non-leaf'}
17:48 <gawel> oups :)
17:49 <gawel> ah ouais, je vois
17:53 <gawel> Ran 3 tests in 0.377s
17:53 <gawel> OK
17:53 <gawel> \o/
17:55 <ogrisel> \o/
17:55 <ogrisel> tu peux verifier la liste afpy-bureau pour voir si y a pas un message de commit en attente de moderation ?
17:55 <gawel> ca m'envois un mail
17:55 <gawel> rien, recu
17:55 <ogrisel> en provenance de root@py.afpy.org
17:55 <ogrisel> ah chiotte
17:56 <gawel> ah si
17:56 <ogrisel> je vais faire des tests avec mon addresse alors
17:56 <ogrisel> ah cool
17:56 <gawel> rien dit, marche
17:56 <ogrisel> marche ?
17:56 <ogrisel> ca marche ou ca marche pas ?
17:56 <gawel> oui, recu
17:57 <ogrisel> ok tu peux autoriser root@py.afpy.org a poster sur la liste ?
17:57 <gawel> sur bureau tu veux ?
17:57 <ogrisel> oui
17:58 <gawel> fait
17:58 <ogrisel> cool
17:58 <gawel> merde j'ai mis sur mebres :D
17:58 <ogrisel> :)
17:58 <ogrisel> j'ai pas encore recu le mail de commit perso
17:59 <gawel> mieux
18:02 <ogrisel> cool ca marche
18:02 <ogrisel> trop dlababalle
18:02 <gawel> :)
18:02 <ogrisel> faut que je finisse le howto
18:04 <ogrisel> je vais faire des taches sur trac
18:04 <gawel> bah c'est assez clair
18:04 <gawel> pas sorcier de s'en servir
18:04 <ogrisel> pour ma todo liste des trucs en retard
18:04 <ogrisel> oui mais bon
18:04 <gawel> par contre, je serais pour merger les repos svn
18:04 <ogrisel> apres un jour je bloguerai sur comment utiliser bzr pour un admin sys
18:05 <gawel> ca sert a rien d'en avoir deux
18:05 <ogrisel> oui mais c'est trop chiant a merger svn
18:05 <gawel> avec svnadmin ?
18:05 <ogrisel> oui
18:05 <gawel> ah
18:05 <ogrisel> enfin ca depend si t'as des corruptions :)
18:05 <gawel> ca se tente
18:06 <ogrisel> je sais que les sur les repos de nuxeo on a des merde a cause de vieux bugs de svn
18:06 <ogrisel> et que du coup svnadmin plante sur ce type d'operation
18:06 <ogrisel> mais bon si tu le sens, va z
18:09 <ogrisel> si tu merges les svn / trac tu garde le quel au final ?
18:09 <ogrisel> c'est surtout pour le trac
18:09 <gawel> misc
18:10 <ogrisel> ok
18:13 <ogrisel> ok c'est parti pour les tickets : http://trac.afpy.org/misc/report/1
18:13 <ogrisel> ok je vais faire une pause et retourner dans mon bouquin moi
18:14 <ogrisel> c'est cool on avance bien :)
18:14 <ogrisel> meme s'il reste a mort de taff
18:14 <gawel> ouaip, carrément
18:14 <gawel> marche pas trop mal les date la
18:14 <ogrisel> avec python ?
18:14 <gawel> ouais
18:15 <gawel> je la formate comme il faut et rulez
18:15 <gawel> en str
18:19 <ogrisel> ok
18:19 <ogrisel> sinon pour dubstation ca te branche toujours pas ?
18:19 <ogrisel> faut que je prenne une decision la
18:20 <gawel> pas plus que ça non
18:20 <gawel> j'ai envis de bouger mais le dub me motive moyen
18:22 <gawel> on dirait que ca marche
18:23 <gawel> je dirais même plus, ça marche
18:24 <gawel> pas la birthdate tiens
18:24 <ogrisel> ok pour le dub
18:24 <ogrisel> cool que ca marche
18:25 <gawel> :)
18:25 <gawel> tu t'y bouge toi ?
18:25 <ogrisel> je penses que je vais bouger en banlieue voir la famille
18:25 <gawel> je vois
18:26 <ogrisel> mais si pour la birthDate, a mon avis c'est que t'es trop vieux :P
18:27 <gawel> hin hin
18:30 <gawel> bon, c'est super nice
18:30 <gawel> tout est ok
18:31 <ogrisel> classe
18:31 <gawel> meme la birthDate :)
18:31 <ogrisel> y a plus qu'a faire une interface d'admin
18:31 <ogrisel> tu as commencé un truc dans le plone ?
18:31 <gawel> surtout un interface pour les membres
18:31 <gawel> non
18:31 <ogrisel> gwen il fait comment ?
18:31 <gawel> je pensais faire un truc avec mod_python
18:31 <ogrisel> ok alors faut la faire en pylons :)
18:31 <gawel> pourquoi pas
18:32 <ogrisel> matte les tutos en video
18:32 <gawel> je connais pas ca me donnera l'ocas de voir
18:32 <ogrisel> strodlaballe
18:32 <gawel> faudras des formulaire plugable dans le plone, mais bon
18:32 <ogrisel> http://www.inklesspen.com/pylons/
18:33 <ogrisel> http://pylonshq.com/
18:35 <ogrisel> tu peux installer Pylons avec easy install sans modifier ton site-packages avec http://peak.telecommunity.com/DevCenter/EasyInstall#custom-installation-locations
18:36 <ogrisel> parceque j'ai eu des merde en melangeant les paquets debian avec les paquets de devs de turbogears et/ou pylons
18:36 <ogrisel> donc vaut mieux se faire un sandbox independant par appli
18:41 <gawel> c'est ce que j'ai fait pour django
18:41 <gawel> enfin c'est dans afpy/lib
18:41 <gawel> pas le must mais bon
18:56 <ogrisel> gawel: oué c'est ok
18:56 <ogrisel> bon j'y vais moi
18:56 <ogrisel> a la prochaine
19:01 <gawel> ++
19:41 <lgodard> gawel: ah ? tel foireux ? je me souviens plus :)
19:48 <jpcw2002> matin tlm