Objet : devel-adl
Archives de la liste
- From: svn AT agendadulibre.org
- To: devel AT agendadulibre.org
- Subject: [Devel] r189 - scripts
- Date: Mon, 18 Sep 2006 23:33:40 +0200 (CEST)
- List-archive: <http://lolut.utbm.info/pipermail/devel>
- List-id: Developpement de l'Agenda du Libre <devel.agendadulibre.org>
Author: thomas
Date: Mon Sep 18 23:33:39 2006
New Revision: 189
Modified:
scripts/adl-submit.py
Log:
Re-indent avec Emacs.
Modified: scripts/adl-submit.py
==============================================================================
--- scripts/adl-submit.py (original)
+++ scripts/adl-submit.py Mon Sep 18 23:33:39 2006
@@ -65,81 +65,81 @@
print u"""Soumettre un évènement dans l'Agenda du Libre
Options:
- --file event.xml Fichier XML décrivant l'évènement.
- --test-output test.html Fichier de sortie HTML de test
- --start-date YYYY-MM-DD Date de début de l'évènement.
- --end-date YYYY-MM-DD Date de fin de l'évènement.
- --start-hour HH:MM Heure de début de l'évènement.
- --end-hour HH:MM Heure de fin de l'évènement.
- --title chaine Titre de l'évènement.
- --description chaine-html Description de l'évènement.
- --city chaine Ville de l'évènement.
- --region entier Région de l'évènement.
- --url chaine URL décrivant l'évènement.
- --contact chaine E-mail de contact
+ --file event.xml Fichier XML décrivant l'évènement.
+ --test-output test.html Fichier de sortie HTML de test
+ --start-date YYYY-MM-DD Date de début de l'évènement.
+ --end-date YYYY-MM-DD Date de fin de l'évènement.
+ --start-hour HH:MM Heure de début de l'évènement.
+ --end-hour HH:MM Heure de fin de l'évènement.
+ --title chaine Titre de l'évènement.
+ --description chaine-html Description de l'évènement.
+ --city chaine Ville de l'évènement.
+ --region entier Région de l'évènement.
+ --url chaine URL décrivant l'évènement.
+ --contact chaine E-mail de contact
Exemple de fichier XML:
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <event>
- <title>Permanence Logiciels Libres</title>
- <start-hour>18:00</start-hour>
- <end-hour>21:00</end-hour>
- <description><![CDATA[
-
- <p><a href="http://www.gulliver.eu.org">Gulliver</a> organise chaque
- semaine une permanence <i>Logiciels Libres</i> ouverte à tous,
- membre de l'association ou non.</p>
-
- <p>Durant cette permanence, vous pourrez trouver des réponses aux
- questions que vous vous posez au sujet du Logiciel Libre, ainsi que
- de l'aide pour résoudre vos problèmes d'installation, de
- configuration et d'utilisation de Logiciels Libres. N'hésitez pas
- à apporter votre ordinateur, afin que les autres participants
- puissent vous aider.</p>
-
- <p>Une connexion Internet est disponible sur place, ainsi que les
- mises à jour pour les distributions GNU/Linux les plus
- courantes.</p>
-
- <p>Cette permanence a lieu à la <a
- href=\"http://www.grand-cordel.com/\">MJC du Grand Cordel</a>, 18
- rue des Plantes à Rennes.</p>
-
- ]]></description>
- <city>Rennes</city>
- <region>6</region>
- <url>http://www.gulliver.eu.org</url>
- <contact>contact AT gulliver.eu.org</contact>
- </event>
+ <?xml version="1.0" encoding="ISO-8859-1"?>
+ <event>
+ <title>Permanence Logiciels Libres</title>
+ <start-hour>18:00</start-hour>
+ <end-hour>21:00</end-hour>
+ <description><![CDATA[
+
+ <p><a href="http://www.gulliver.eu.org">Gulliver</a> organise chaque
+ semaine une permanence <i>Logiciels Libres</i> ouverte à tous,
+ membre de l'association ou non.</p>
+
+ <p>Durant cette permanence, vous pourrez trouver des réponses aux
+ questions que vous vous posez au sujet du Logiciel Libre, ainsi
que
+ de l'aide pour résoudre vos problèmes d'installation, de
+ configuration et d'utilisation de Logiciels Libres. N'hésitez pas
+ à apporter votre ordinateur, afin que les autres participants
+ puissent vous aider.</p>
+
+ <p>Une connexion Internet est disponible sur place, ainsi que les
+ mises à jour pour les distributions GNU/Linux les plus
+ courantes.</p>
+
+ <p>Cette permanence a lieu à la <a
+ href=\"http://www.grand-cordel.com/\">MJC du Grand Cordel</a>, 18
+ rue des Plantes à Rennes.</p>
+
+ ]]></description>
+ <city>Rennes</city>
+ <region>6</region>
+ <url>http://www.gulliver.eu.org</url>
+ <contact>contact AT gulliver.eu.org</contact>
+ </event>
Valeurs des champs:
- Le fichier XML peut contenir des champs dont le nom est semblable
- à celui des options, à savoir start-date, end-date,
- start-hour, end-hour, title, description, city, region, url et
- contact. Si un champ est défini à la fois dans le fichier XML
- et sur la ligne de commande, alors c'est la valeur donnée sur la
- ligne de commande qui l'emporte. Entre le fichier XML et la ligne de
- commande, tous les champs doivent être définis, sinon l'ajout
- de l'évènement sera refusé. Le seul champ qui peut être
- vide est end-date, auquel cas il sera positionné à la même
- valeur que start-date.
+ Le fichier XML peut contenir des champs dont le nom est semblable
+ à celui des options, à savoir start-date, end-date,
+ start-hour, end-hour, title, description, city, region, url et
+ contact. Si un champ est défini à la fois dans le fichier XML
+ et sur la ligne de commande, alors c'est la valeur donnée sur la
+ ligne de commande qui l'emporte. Entre le fichier XML et la ligne de
+ commande, tous les champs doivent être définis, sinon l'ajout
+ de l'évènement sera refusé. Le seul champ qui peut être
+ vide est end-date, auquel cas il sera positionné à la même
+ valeur que start-date.
Exemple d'utilisation:
- ./adl-submit.py --file event.xml --start-date 2005-12-10
+ ./adl-submit.py --file event.xml --start-date 2005-12-10
- Ajoutera l'évènement décrit dans le fichier event.xml
- (donné ci-dessous) pour la date du 10 décembre 2005. Puisque
- le champ end-date n'est pas spécifié, alors il vaudra la
- même chose que start-date, c'est à dire le 10 décembre
- 2005.
+ Ajoutera l'évènement décrit dans le fichier event.xml
+ (donné ci-dessous) pour la date du 10 décembre 2005. Puisque
+ le champ end-date n'est pas spécifié, alors il vaudra la
+ même chose que start-date, c'est à dire le 10 décembre
+ 2005.
- Pour vérifier que le formatage est correct avant l'envoi,
- on pourra utiliser:
+ Pour vérifier que le formatage est correct avant l'envoi,
+ on pourra utiliser:
- ./adl-submit.py --file event.xml --start-date 2005-12-10
- --test-output test.html
+ ./adl-submit.py --file event.xml --start-date 2005-12-10
+ --test-output test.html
- et regarder le fichier test.html avec un navigateur Web.
+ et regarder le fichier test.html avec un navigateur Web.
"""
sys.exit (1)
@@ -158,161 +158,161 @@
values[field] = val
def ParseOptions(options):
- getoptOptions = map (lambda elt: elt + "=", eventFields)
- getoptOptions.append ("file=")
- getoptOptions.append ("help")
- getoptOptions.append("test-output=")
- eventFieldValues = {}
-
- testOutputFile = ""
-
- try:
- opts, args = getopt.getopt(options, "", getoptOptions)
- except getopt.GetoptError:
- print u"Option inconnue."
- Usage()
-
- if opts == []:
- Usage()
-
- for param, val in opts:
- if param == "--help":
- Usage()
-
- if param == "--file":
- HandleXmlFile(val, eventFieldValues)
- opts.remove ((param, val))
-
- if param == "--test-output":
- testOutputFile = val
- opts.remove ((param, val))
+ getoptOptions = map (lambda elt: elt + "=", eventFields)
+ getoptOptions.append ("file=")
+ getoptOptions.append ("help")
+ getoptOptions.append("test-output=")
+ eventFieldValues = {}
+
+ testOutputFile = ""
+
+ try:
+ opts, args = getopt.getopt(options, "", getoptOptions)
+ except getopt.GetoptError:
+ print u"Option inconnue."
+ Usage()
+
+ if opts == []:
+ Usage()
+
+ for param, val in opts:
+ if param == "--help":
+ Usage()
+
+ if param == "--file":
+ HandleXmlFile(val, eventFieldValues)
+ opts.remove ((param, val))
+
+ if param == "--test-output":
+ testOutputFile = val
+ opts.remove ((param, val))
- for param, val in opts:
- HandleParamValue (param, val, eventFieldValues)
+ for param, val in opts:
+ HandleParamValue (param, val, eventFieldValues)
- return (eventFieldValues, testOutputFile)
+ return (eventFieldValues, testOutputFile)
def SubmitEvent(event, testOutputFile):
- if event.has_key ("start-date") is False:
- print u"La date de début de l'évènement n'est pas spécifiée"
- return
-
- if event.has_key ("end-date") is False:
- event ["end-date"] = event ["start-date"]
-
- if re.compile(r'^[^\<\>]*$').search (event['title']) is None:
- print u"Problème de formatage dans le titre: '%s'. Les tags HTML ne
sont pas autorisés." % event['title']
- return
-
- try:
- startDate = time.strptime(event['start-date'], "%Y-%m-%d")
- except ValueError:
- print u"Problème de formatage dans la date de début: '%s'. Elle doit
être de la forme AAAA-MM-JJ" % event['start-date']
- return
-
- try:
- endDate = time.strptime(event['end-date'], "%Y-%m-%d")
- except ValueError:
- print u"Problème de formatage dans la date de fin: '%s'. Elle doit
être de la forme AAAA-MM-JJ" % event['end-date']
- return
-
- try:
- startHour = time.strptime(event['start-hour'], "%H:%M")
- except ValueError:
- print u"Problème de formatage dans l'heure de début: '%s'. Elle doit
être de la forme: HH:MM" % event['start-hour']
- return
-
- try:
- endHour = time.strptime(event['end-hour'], "%H:%M")
- except ValueError:
- print u"Problème de formatage dans l'heure de fin: '%s'. Elle doit
être de la forme HH:MM" % event['start-hour']
- return
-
- startDate = (startDate[0], startDate[1], startDate[2], startHour[3],
- startHour[4], startDate[5], startDate[6], startDate[7],
startDate[8])
- endDate = (endDate[0], endDate[1], endDate[2], endHour[3],
- endHour[4], endDate[5], endDate[6], endDate[7],
endDate[8])
-
- if time.mktime(startDate) <= time.time():
- print u"ERREUR: La date de début de l'évènement est dans le passé."
- return
-
- if time.mktime(endDate) <= time.time():
- print u"ERREUR: La date de fin de l'évènement est dans le passé."
- return
-
- if time.mktime(endDate) < time.mktime(startDate):
- print u"ERREUR: La date de fin de l'évènement est avant la date de
début."
- return
-
- if re.compile(r'^[^\<\>]*$').search (event['city']) is None:
- print u"ERREUR: Problème de formatage dans le nom de la ville: '%s'.
Les tags HTML sont interdits." % event['city']
- return
-
- event['region'] = unicode(event['region'], 'iso-8859-1')
- if regions.has_key(event['region']) is False:
- print u"ERREUR: La région '%s' n'existe pas." % event['region']
- print u"Les régions existantes sont:"
- for name in regions:
- print u" - " + name
- return
-
- if re.compile(r'^http://.*$').search (event['url']) is None and
re.compile(r'^https://.*$').search (event['url']) is None:
- print u"ERREUR: Problème de formatage dans l'URL: '%s'. Elle doit
commencer par http:// ou https://." % event['url']
- return
-
- if
re.compile(r'^([A-Za-z0-9_\.\-]*)@([A-Za-z0-9_\-]*)\.([A-Za-z0-9_\.\-]*)$').search
(event['contact']) is None:
- print u"ERREUR: Problème de formatage dans l'adresse e-mail." % event
['contact']
- return
-
- curl = pycurl.Curl()
-
- contents = StringIO.StringIO()
- curl.setopt(curl.WRITEFUNCTION, contents.write)
-
- if testOutputFile:
- curl.setopt (curl.URL, baseUrl + './testevent.php')
- else:
- curl.setopt (curl.URL, baseUrl + '/submit.php')
-
- curl.setopt(curl.HTTPPOST, [('__event_title',
str(event['title'])),
- ('__event_start_day', str(startDate[2])),
- ('__event_start_month', str(startDate[1])),
- ('__event_start_year', str(startDate[0])),
- ('__event_start_hour', str(startDate[3])),
- ('__event_start_minute', str(startDate[4])),
- ('__event_end_day', str(endDate[2])),
- ('__event_end_month', str(endDate[1])),
- ('__event_end_year', str(endDate[0])),
- ('__event_end_hour', str(endHour[3])),
- ('__event_end_minute', str(endHour[4])),
- ('__event_description',
str(event['description'])),
- ('__event_city', str(event['city'])),
- ('__event_region',
str(regions[event['region']])),
- ('__event_locality', str(0)),
- ('__event_url', str(event['url'])),
- ('__event_contact',
str(event['contact'])),
- ('__event_save', str(1))])
-
- curl.perform()
-
- if testOutputFile:
- if curl.getinfo(curl.HTTP_CODE) != 200:
- print u"Erreur lors de la récupération de la sortie HTML"
- sys.exit(0)
- fp = open(testOutputFile, "wb")
- s = contents.getvalue()
- s = re.sub(r'href="([A-Za-z0-9]*).css"',
r'href="http://www.agendadulibre.org/\1.css"', s)
- fp.write(s)
- fp.close()
-
- else:
- if curl.getinfo(curl.HTTP_CODE) != 200:
- print u"Erreur lors de la soumission de l'évènement"
- sys.exit(0)
- else:
- print u"Évènement soumis avec succès. Il sera prochainement
validé par un modérateur."
+ if event.has_key ("start-date") is False:
+ print u"La date de début de l'évènement n'est pas spécifiée"
+ return
+
+ if event.has_key ("end-date") is False:
+ event ["end-date"] = event ["start-date"]
+
+ if re.compile(r'^[^\<\>]*$').search (event['title']) is None:
+ print u"Problème de formatage dans le titre: '%s'. Les tags HTML ne
sont pas autorisés." % event['title']
+ return
+
+ try:
+ startDate = time.strptime(event['start-date'], "%Y-%m-%d")
+ except ValueError:
+ print u"Problème de formatage dans la date de début: '%s'. Elle doit
être de la forme AAAA-MM-JJ" % event['start-date']
+ return
+
+ try:
+ endDate = time.strptime(event['end-date'], "%Y-%m-%d")
+ except ValueError:
+ print u"Problème de formatage dans la date de fin: '%s'. Elle doit
être de la forme AAAA-MM-JJ" % event['end-date']
+ return
+
+ try:
+ startHour = time.strptime(event['start-hour'], "%H:%M")
+ except ValueError:
+ print u"Problème de formatage dans l'heure de début: '%s'. Elle doit
être de la forme: HH:MM" % event['start-hour']
+ return
+
+ try:
+ endHour = time.strptime(event['end-hour'], "%H:%M")
+ except ValueError:
+ print u"Problème de formatage dans l'heure de fin: '%s'. Elle doit
être de la forme HH:MM" % event['start-hour']
+ return
+
+ startDate = (startDate[0], startDate[1], startDate[2], startHour[3],
+ startHour[4], startDate[5], startDate[6], startDate[7],
startDate[8])
+ endDate = (endDate[0], endDate[1], endDate[2], endHour[3],
+ endHour[4], endDate[5], endDate[6], endDate[7],
endDate[8])
+
+ if time.mktime(startDate) <= time.time():
+ print u"ERREUR: La date de début de l'évènement est dans le passé."
+ return
+
+ if time.mktime(endDate) <= time.time():
+ print u"ERREUR: La date de fin de l'évènement est dans le passé."
+ return
+
+ if time.mktime(endDate) < time.mktime(startDate):
+ print u"ERREUR: La date de fin de l'évènement est avant la date de
début."
+ return
+
+ if re.compile(r'^[^\<\>]*$').search (event['city']) is None:
+ print u"ERREUR: Problème de formatage dans le nom de la ville: '%s'.
Les tags HTML sont interdits." % event['city']
+ return
+
+ event['region'] = unicode(event['region'], 'iso-8859-1')
+ if regions.has_key(event['region']) is False:
+ print u"ERREUR: La région '%s' n'existe pas." % event['region']
+ print u"Les régions existantes sont:"
+ for name in regions:
+ print u" - " + name
+ return
+
+ if re.compile(r'^http://.*$').search (event['url']) is None and
re.compile(r'^https://.*$').search (event['url']) is None:
+ print u"ERREUR: Problème de formatage dans l'URL: '%s'. Elle doit
commencer par http:// ou https://." % event['url']
+ return
+
+ if
re.compile(r'^([A-Za-z0-9_\.\-]*)@([A-Za-z0-9_\-]*)\.([A-Za-z0-9_\.\-]*)$').search
(event['contact']) is None:
+ print u"ERREUR: Problème de formatage dans l'adresse e-mail." %
event ['contact']
+ return
+
+ curl = pycurl.Curl()
+
+ contents = StringIO.StringIO()
+ curl.setopt(curl.WRITEFUNCTION, contents.write)
+
+ if testOutputFile:
+ curl.setopt (curl.URL, baseUrl + './testevent.php')
+ else:
+ curl.setopt (curl.URL, baseUrl + '/submit.php')
+
+ curl.setopt(curl.HTTPPOST, [('__event_title',
str(event['title'])),
+ ('__event_start_day', str(startDate[2])),
+ ('__event_start_month', str(startDate[1])),
+ ('__event_start_year', str(startDate[0])),
+ ('__event_start_hour', str(startDate[3])),
+ ('__event_start_minute', str(startDate[4])),
+ ('__event_end_day', str(endDate[2])),
+ ('__event_end_month', str(endDate[1])),
+ ('__event_end_year', str(endDate[0])),
+ ('__event_end_hour', str(endHour[3])),
+ ('__event_end_minute', str(endHour[4])),
+ ('__event_description',
str(event['description'])),
+ ('__event_city',
str(event['city'])),
+ ('__event_region',
str(regions[event['region']])),
+ ('__event_locality', str(0)),
+ ('__event_url', str(event['url'])),
+ ('__event_contact',
str(event['contact'])),
+ ('__event_save', str(1))])
+
+ curl.perform()
+
+ if testOutputFile:
+ if curl.getinfo(curl.HTTP_CODE) != 200:
+ print u"Erreur lors de la récupération de la sortie HTML"
+ sys.exit(0)
+ fp = open(testOutputFile, "wb")
+ s = contents.getvalue()
+ s = re.sub(r'href="([A-Za-z0-9]*).css"',
r'href="http://www.agendadulibre.org/\1.css"', s)
+ fp.write(s)
+ fp.close()
+
+ else:
+ if curl.getinfo(curl.HTTP_CODE) != 200:
+ print u"Erreur lors de la soumission de l'évènement"
+ sys.exit(0)
+ else:
+ print u"Évènement soumis avec succès. Il sera prochainement
validé par un modérateur."
if (len(sys.argv) == 1) and sys.argv[1] == "--help":
- [Devel] r189 - scripts, svn, 18/09/2006
Archives gérées par MHonArc 2.6.16.