w.c.s. : nouvelle mouture des outils suite à discussions avec Davin
authorProgfou <jean-christophe.andre@auf.org>
Wed, 15 Dec 2010 16:59:10 +0000 (23:59 +0700)
committerProgfou <jean-christophe.andre@auf.org>
Wed, 15 Dec 2010 16:59:10 +0000 (23:59 +0700)
wcs/sigma-download.py [new file with mode: 0755]
wcs/wcs-extract-all.sh
wcs/wcs-extract.py

diff --git a/wcs/sigma-download.py b/wcs/sigma-download.py
new file mode 100755 (executable)
index 0000000..e9d36e6
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import urllib2
+
+SIGMA_BASE = 'https://formulaires.auf.org/sigma'
+SIGMA_USER = 'XXX'
+SIGMA_PASS = 'XXX'
+
+passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
+passman.add_password(None, SIGMA_BASE, SIGMA_USER, SIGMA_PASS)
+authhandler = urllib2.HTTPBasicAuthHandler(passman)
+opener = urllib2.build_opener(authhandler)
+urllib2.install_opener(opener)
+
+def retrieve(url, filename):
+    doc = urllib2.urlopen(url)
+    f = file(filename, 'wb')
+    f.write(doc.read())
+    f.close()
+    doc.close()
+
+# on récupère quelques pages…
+
+formname = 'demande-de-bourse-de-doctorat-2010-2011-algerie-maroc-tunisie'
+
+for filename in ['field-names.json', 'last-run.log']:
+    url = '%s/%s/%s' % (SIGMA_BASE, formname, filename)
+    retrieve(url, filename) # sauve le contenu à l'URL donnée dans filename
+
index e39a248..1fbe3d8 100755 (executable)
@@ -14,11 +14,6 @@ echo "Traitement des formulaires de '$SITE'…"
 for f in $FORMS
 do
   echo " $f"
-  dir="$OUTPUT_DIR/$SITE/$f"
-  log="$dir/last-run.log"
-  mkdir -p $dir
-  echo "Début : `date +"%Y-%m-%d %H:%M:%S"`" > $log
-  python wcs-extract.py $OUTPUT_DIR $SITE $f >> $log 2>&1
-  echo "Fin : `date +"%Y-%m-%d %H:%M:%S"`" >> $log
+  python wcs-extract.py $OUTPUT_DIR $SITE $f
 done
 echo "Terminé."
index 85cb54c..cd0ade5 100755 (executable)
@@ -3,6 +3,8 @@
 
 import os
 import os.path
+import shutil
+import logging
 from time import gmtime, strftime
 import simplejson as json
 
@@ -12,9 +14,6 @@ from wcs.fields import TitleField, CommentField, TextField, \
                        StringField, ItemField, EmailField, \
                        DateField, FileField, BoolField
 
-COPY_COMMAND = '/bin/cp'
-COPY_ARGS = '-af'
-
 
 def reduce_to_alnum(s, replacement_char='-'):
     """réduction d'une chaîne de caractères à de l'alpha-numérique"""
@@ -103,8 +102,8 @@ def extract_data(formdef, output_directory):
                 result[field_name] = "%s.%s" % (field_name, extension)
                 qfiles[field_name] = data.qfilename
             else:
-                print "WARNING: unknown field type '%s' for '%s'" % \
-                                        (field.__class__.__name__, field.label)
+                logging.error("Type de champ inconnu '%s' pour '%s'.",
+                                    field.__class__.__name__, field.label)
                 raise RuntimeError
 
         num_dossier = result['num_dossier']
@@ -114,23 +113,23 @@ def extract_data(formdef, output_directory):
 
         filename = "%04d-%s-%s-%s" % (num_dossier, nom, prenom, adel)
 
-        print "Dossier '%s'..." % filename,
-
         # copie des fichiers joints
         for f in qfiles:
             result[f] = filename + '_' + result[f]
             src = os.path.join(pub.app_dir, 'uploads', qfiles[f])
-            dst = os.path.join(output_directory, result[f])
+            dst = os.path.join(output_directory, 'data', result[f])
             if not os.path.exists(dst) or os.path.getmtime(src) > os.path.getmtime(dst):
-                os.spawnl(os.P_WAIT, COPY_COMMAND, COPY_ARGS, src, dst)
+                shutil.copy2(src, dst)
                 os.chmod(dst, 0644)
 
         # génération du fichier JSON
-        f = open(os.path.join(output_directory, filename + '.json'), 'wb')
+        jsonname = os.path.join(output_directory, 'data', filename + '.json')
+        f = open(jsonname, 'wb')
         f.write(json.dumps(result, ensure_ascii=False))
         f.close()
 
-        print "%s." % result['wcs_workflow_status']
+        logging.info("Dossier '%s' : %s.",
+                                    filename, result['wcs_workflow_status'])
 
 
 if __name__ == '__main__':
@@ -149,6 +148,13 @@ if __name__ == '__main__':
     if not os.path.isdir(OUTPUT_DIRECTORY):
         os.makedirs(OUTPUT_DIRECTORY, 0755)
 
+    logging.basicConfig(level=logging.DEBUG,
+        format='%(asctime)s %(levelname)s %(message)s',
+        filename=os.path.join(OUTPUT_DIRECTORY, 'last-run.log'),
+        filemode='w')
+
+    logging.info('Début.')
+
     pub = publisher.WcsPublisher.create_publisher()
     pub.app_dir = os.path.join(pub.app_dir, VHOST)
 
@@ -158,7 +164,5 @@ if __name__ == '__main__':
 
     extract_data(formdef, OUTPUT_DIRECTORY)
 
-    f = open(os.path.join(OUTPUT_DIRECTORY, 'last-run.txt'), 'w')
-    f.write(strftime('%Y-%m-%d %H:%M:%S GMT', gmtime()))
-    f.close()
+    logging.info('Fin.')