From 767aad132ab66a2f038b0d67c022b89a8ff81736 Mon Sep 17 00:00:00 2001
From: Philippe Bardou <philippe.bardou@inra.fr>
Date: Thu, 23 Feb 2017 15:51:14 +0000
Subject: [PATCH] Upload list : Test the input file - Each line must have the
 same number of field - File must be text...

---
 bin/jvenn_server.py | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/bin/jvenn_server.py b/bin/jvenn_server.py
index 6b866e4..d7afe46 100644
--- a/bin/jvenn_server.py
+++ b/bin/jvenn_server.py
@@ -38,7 +38,10 @@ class AppServer(object):
         delimiter = '\t'
         if (kwargs["delimiter"] == "," or kwargs["delimiter"] == ";") :
            delimiter = kwargs["delimiter"]
-        file_path = self.__upload(**kwargs)
+        try:
+            file_path = self.__upload(**kwargs)
+        except:
+            return json.dumps([{'error':"Error: Please provide a delimited text file."}])
         return self.__compare_lists(file_path, kwargs["header"], delimiter)
 
     def __upload(self, **kwargs):
@@ -67,11 +70,15 @@ class AppServer(object):
         FH = open(file,'r')
         names = {}
         samples = {}
+        linenb = 0
         
         for i, line in enumerate(FH.readlines()):
+            if i == 0:
+                linenb = len(line.split(spliter))
             if i == 0 and header:
                 for j, val in enumerate(line.split(spliter)):
                     names[string.ascii_uppercase[j]] = val.rstrip('\n\r')
+                linenb = len(names)
             else:
                 for j, val in enumerate(line.split(spliter)):
                     if i == 0:
@@ -80,7 +87,10 @@ class AppServer(object):
                         samples[j].append(val)
                     else:
                         samples[j] = [val]
-        
+                if linenb != len(line.split(spliter)):
+                    return json.dumps([{'error':"Error: Inconsistent number of fields line " + str(i+1) + 
+                                        " (" + str(len(line.split(spliter))) + " for " + str(linenb) + " expected)"}])
+                    
         d = {}
         j = 1
         
-- 
GitLab