L'Agenda du Libre
L'agenda des évènements du Logiciel Libre en France
Soumission d'évènement par script
Table des matières
Principe
Afin de faciliter la soumission d'évènement régulier, un petit script vous est proposé. À partir de la description d'un évènement dans un fichier XML et d'informations données sur la ligne de commande, il permet de soumettre automatiquement un évènement dans l'Agenda du Libre.
Ce script est disponible ici. Il utilise Python, et le module Curl pour Python (paquets Debian python2.3 et python2.3-pycurl ou python2.4 et python2.4-pycurl.
Utilisation
Il faut tout d'abord rédiger un document XML dont voici un exemple (qui peut également être téléchargé ici) :
<?xml version="1.0" encoding="ISO-8859-1"?> <event> <title>Gulliver - Permanence autour du libre</title> <start-hour>19:00</start-hour> <end-hour>22:00</end-hour> <description><![CDATA[ <p>L'association <a href="http://www.gulliver.eu.org">Gulliver</a>, groupe d'utilisateurs de logiciels libres d'Ille et Vilaine et des environs de Rennes, tient une permanence à la <a href="http://www.mce-info.org/">Maison de la consommation et de l'environnement</a>, 48 boulevard Magenta à Rennes, chaque vendredi à partir de 19h00. Une permanence aura donc lieu le $date.</p> <p>Cette permanence est ouverte à tous, membres de l'association ou non. On peut s'y <b>informer</b> sur les logiciels libres, en <b>tester</b>, amener sa machine pour une <b>installation</b>.</p> <p>Pour une installation ou tout type d'intervention, il est conseillé :</p> <ul> <li>de prévenir auparavant sur la <a href="http://gulliver.eu.org/ml/ml.html">liste de diffusion de Gulliver</a> ou sur l'adresse de contact en précisant sa demande, la configuration de sa machine ;</li> <li>de prendre connaissance de la <a href="http://gulliver.eu.org/wiki/charte3">Charte de Gulliver</a>.</li></ul> <p>Les <b>partages de compétences et d'expériences</b> complémentaires sur le libre sont tous les bienvenus.</p> <p>Une connexion Internet est disponible sur place. Accès par le côté ouest de la MCE (fond de la cour) ; demander la clef du parking à la permanence si besoin (transport de machine).</p> ]]></description> <city>Rennes</city> <region>Bretagne</region> <url>http://gulliver.eu.org/wiki/MCEPermanence</url> <contact>contact@gulliver.eu.org</contact> <submitter>contact@gulliver.eu.org</submitter> <tags>gulliver permanence install-party</tags> </event>
Ce fichier XML doit contenir toutes les informations qui ne changent pas sur votre évènement. Les champs existants sont :
- title, le titre de l'évènement, sans le nom du lieu ni la date. Il doit faire en général moins de cinq mots ;
- start-date, la date de début au format
AAAA-MM-JJ
; - end-date, la date de fin au format
AAAA-MM-JJ
; - start-hour, l'heure de début au format
HH:MM
; - end-hour, la fin de début au format
HH:MM
; - description, une description la plus complète
possible. Elle peut contenir du formatage en HTML en utilisant les
balises a (liens), b (gras), i (italique),
ul et li (liste). Le texte de la description peut
également contenir la chaîne
$month
, qui sera automatiquement remplacée par le mois du début de l'évènement, ou la chaîne$date
qui sera remplacée par la date du début de l'évènement ; - city, la ville où a lieu l'évènement ;
- region, la région où a lieu l'évènement ;
- url, un lien direct vers une page donnant des informations complémentaires sur l'évènement ;
- contact, une adresse e-mail de contact ;
- submitter, adresse e-mail de la la personne ayant proposé l'information (prend la valeur de contact si absent) ;
- tags, liste de tags séparés par des espaces.
Des remplacements de texte sont également faits dans la description :
- $month est remplacé par le mois où aura lieu l'évènement (en toutes lettres: janvier, février, mars, etc.)
- $date est remplacé par la date où aura lieu l'évènement, sous la forme « 24 janvier »
Ces remplacements servent à créer des fichiers XML génériques, qui pourront être utilisés pour un évènement qui se répète dans le temps.
Une fois ce fichier écrit, il suffit d'utiliser le script. Tout,
d'abord, on passera un paramètre --file event.xml
pour
spécifier le fichier XML précédement créé. On passera
également en paramètre toutes les informations manquantes dans
le fichier XML. Les options ont le même nom que les champs du
fichier XML. Si une option est fournie alors que le champ existe dans
le fichier XML, alors la valeur de l'option sera préférée
à la valeur du fichier XML. Au total, entre les options de la ligne
de commande et les valeurs du fichier, tous les champs doivent être
remplis pour que la soumission fonctionne. Exceptions : si le
champ end-date n'est pas spécifié, alors il prendra la valeur
du champ start-date et si le champ submitter n'est pas
spécifié, alors il prendra la valeur du champ contact.
Pour un évènement régulier (une fois par mois, par semaine), une utilisation typique sera de renseigner les champs title, start-hour, end-hour, description, city, region, url, contact, submitter et tags dans le fichier XML. On spécifiera alors la date sur la ligne de commande.
On peut tout d'abord vérifier que le formatage de la description de
l'évènement est correct, en utilisant l'option
--test-output
. On peut ainsi générer un fichier HTML, que
l'on pourra valider avec un navigateur Web.
./adl-submit.py --file event.xml --start-date 2006-01-23 --test-output test.html
Une fois ceci fait, il reste plus qu'à soumettre l'évènement :
./adl-submit.py --file event.xml --start-date 2006-01-23
Soumettre un grand nombre d'évènements réguliers
Un cas d'utilisation typique du script est l'ajout d'un grand nombre d'évènements réguliers, par exemple les rencontres ou les repas d'un groupe d'utilisateur, dont les dates sont prévues longtemps à l'avance.
Tout d'abord, préparez un fichier XML avec tous les champs, sauf start-date et end-date. Le texte de la description utilisera avec intérêt les mots clés $date ou $month qui seront automatiquement remplacés par la date ou le mois de l'évènement.
Une fois ce fichier XML prêt, validez que le résultat est correct,
en utilisant l'option --test-output
. Vous pouvez
également l'envoyer aux modérateurs de l'Agenda du Libre
(moderateurs@agendadulibre.org
) pour qu'ils valident la
description: ainsi, lors de la soumission, vous serez sûr que tous les
évènements seront validés d'un seul coup.
Les vérifications étant faites, créez un fichier texte, s'appelant
par exemple liste-dates
, contenant les dates de tous les
évènements, sous la forme :
2008-09-10 2008-09-24 2008-10-08 2008-10-22 2008-11-12 2008-11-26 2008-12-03 2008-12-17 2009-01-07 2009-01-21 2009-02-04 2009-02-25 2009-03-11 2009-03-25 2009-04-22 2009-05-06 2009-05-20 2009-06-03 2009-06-17
Puis, grâce à la magie du shell, on va exécuter le script de soumission d'évènements autant de fois que nécessaire :
for date in $(cat liste-dates) ; do ./adl-submit.py --file event.xml --start-date $date ; done
Et le tour est joué. Lorsque les évènements seront validés, vous recevrez un courrier électronique de notification, contenant notamment les instructions pour éditer ou annuler un évènement si cela s'avèrait nécessaire.
Questions ? Problèmes ?
Si vous avez des questions concernant son utilisation, vous pouvez contacter la liste de développement de l'Agenda du Libre, en vous inscrivant ici.