wcs : meilleur support des workflow, extraction triée par statut
authorProgfou <jean-christophe.andre@auf.org>
Tue, 1 Oct 2013 02:44:45 +0000 (22:44 -0400)
committerProgfou <jean-christophe.andre@auf.org>
Tue, 1 Oct 2013 02:44:45 +0000 (22:44 -0400)
wcs/wcs-extract

index 2aef970..5276b42 100755 (executable)
@@ -94,11 +94,16 @@ def extract_data(formdef, output_directory):
                             " On ignore...", object.id)
             continue
 
+        try:
+            workflow_status = object.status.startswith('wf-') and \
+                            object.get_workflow_status().name or None
+        except:
+            workflow_status = None
+
         result = {
             'num_dossier': object.id,
             'wcs_status': object.status,
-            'wcs_workflow_status': (object.status.startswith('wf-') and \
-                                object.get_workflow_status().name or None),
+            'wcs_workflow_status': workflow_status,
             'wcs_user_email': object.user.email,
             'wcs_user_display_name': object.user.display_name,
            #'wcs_last_modified': strftime('%Y-%m-%d %H:%M:%S', gmtime(object.last_modified())),
@@ -168,17 +173,22 @@ def extract_data(formdef, output_directory):
         filename = "%04d-%s-%s-%s" % (num_dossier, nom, prenom, adel)
         liste_dossiers.append(filename + '.json')
 
+        # création du sous-dossier destination, au besoin
+        dstdir = os.path.join(output_directory, 'data', result['wcs_status'])
+        if not os.path.isdir(dstdir):
+            os.mkdir(dstdir)
+
         # 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, 'data', result[f])
+            dst = os.path.join(dstdir, result[f])
             if not os.path.exists(dst) or os.path.getmtime(src) > os.path.getmtime(dst):
                 shutil.copy2(src, dst)
                 os.chmod(dst, 0644)
 
         # génération du fichier JSON
-        jsonname = os.path.join(output_directory, 'data', filename + '.json')
+        jsonname = os.path.join(dstdir, filename + '.json')
         f = open(jsonname, 'wb')
         f.write(json.dumps(result, ensure_ascii=False).encode('utf-8'))
         f.close()