From 4a64906acf74986c1a0f738aaccdcb517f9b7c04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr>
Date: Thu, 23 Mar 2017 21:42:30 +0100
Subject: [PATCH] add stoponfail option for protein import

---
 .../management/commands/import_v1_data.py       | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/ippisite/ippidb/management/commands/import_v1_data.py b/ippisite/ippidb/management/commands/import_v1_data.py
index ee2da525..8820aca4 100644
--- a/ippisite/ippidb/management/commands/import_v1_data.py
+++ b/ippisite/ippidb/management/commands/import_v1_data.py
@@ -1,4 +1,4 @@
-from django.core.management import BaseCommand
+from django.core.management import BaseCommand, CommandError
 import mysql.connector
 
 from ippidb.models import Bibliography, Protein, Taxonomy
@@ -22,6 +22,14 @@ class Command(BaseCommand):
             default=False,
             help='Flush and migrate proteins',
         )
+        parser.add_argument(
+            '--stoponfail',
+            action='store_true',
+            dest='stoponfail',
+            default=False,
+            help='Stop on fail',
+        )
+
 
     def handle(self, *args, **options):
         conn = mysql.connector.connect(host="localhost",user="root",password="ippidb", database="ippidb")
@@ -57,7 +65,12 @@ class Command(BaseCommand):
                     p.uniprot_id = row[1]
                     p.save()
                 except Exception as e:
-                    self.stdout.write(self.style.ERROR('Failed inserting {} {}'.format(row[1], row[2])))
+                    if options['stoponfail']:
+                        import traceback
+                        self.stderr.write(traceback.format_exc())
+                        raise CommandError('Failed inserting {} {}'.format(row[1], row[2]))
+                    else:
+                        self.stdout.write(self.style.ERROR('Failed inserting {} {}'.format(row[1], row[2])))
                 else:
                     self.stdout.write(self.style.SUCCESS('Successfully inserted {} {}'.format(row[1], row[2])))
             
-- 
GitLab