wcs-extract : gestion des exceptions sur la détection du type de fichier
[progfou.git] / wcs / wcs-extract
index 001fdc7..ec414a9 100755 (executable)
@@ -92,6 +92,11 @@ def extract_data(formdef, output_directory):
 
     liste_dossiers = []
     for object in formdef.data_class().select():
 
     liste_dossiers = []
     for object in formdef.data_class().select():
+        if object.user is None:
+            logging.warning("Dossier '%s' sans utilisateur associé ?!?"\
+                            " On ignore...", object.id)
+            continue
+
         result = {
             'num_dossier': object.id,
             'wcs_status': object.status,
         result = {
             'num_dossier': object.id,
             'wcs_status': object.status,
@@ -131,9 +136,13 @@ def extract_data(formdef, output_directory):
                     extension = data.orig_filename.rpartition('.')[2].lower()
                 else: # il n'y a pas d'extension dans le nom de fichier
                     p = os.path.join(pub.app_dir, 'uploads', data.qfilename)
                     extension = data.orig_filename.rpartition('.')[2].lower()
                 else: # il n'y a pas d'extension dans le nom de fichier
                     p = os.path.join(pub.app_dir, 'uploads', data.qfilename)
-                    #m = magicmime.from_file(p) => ce sera pour plus tard…
-                    m = magicmime.file(p).split()[0].strip(';')
-                    extension = mimetypes.guess_extension(m)
+                    try:
+                        #m = magicmime.from_file(p) => ce sera pour plus tard…
+                        m = magicmime.file(p).split()[0].strip(';')
+                        extension = mimetypes.guess_extension(m)
+                    except:
+                        logging.warning("Type de fichier inconnu pour '%s'.", p)
+                        extension = None
                     if extension is not None:
                         extension = extension[1:]
                     else:
                     if extension is not None:
                         extension = extension[1:]
                     else:
@@ -189,8 +198,8 @@ if __name__ == '__main__':
 
     os.umask(0022)
     # création du dossier d'extraction, au besoin
 
     os.umask(0022)
     # création du dossier d'extraction, au besoin
-    if not os.path.isdir(OUTPUT_DIRECTORY):
-        os.makedirs(OUTPUT_DIRECTORY, 0755)
+    if not os.path.isdir(os.path.join(OUTPUT_DIRECTORY, 'data')):
+        os.makedirs(os.path.join(OUTPUT_DIRECTORY, 'data'), 0755)
 
     logging.basicConfig(level=logging.DEBUG,
         format='%(asctime)s %(levelname)s %(message)s',
 
     logging.basicConfig(level=logging.DEBUG,
         format='%(asctime)s %(levelname)s %(message)s',