summaryrefslogtreecommitdiff
path: root/ishtar_common/models_imports.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-10-11 16:33:12 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-10-11 16:33:12 +0200
commit0049a4f8ad6e1dfa9a5086131a631267621d6058 (patch)
treeddc953d54c1858b4755c8f1db10b7f24b1f867cc /ishtar_common/models_imports.py
parent810a87e4b7e15d6ffe4b7b04538db264fb755318 (diff)
downloadIshtar-0049a4f8ad6e1dfa9a5086131a631267621d6058.tar.bz2
Ishtar-0049a4f8ad6e1dfa9a5086131a631267621d6058.zip
Import: catch error in the CSV file
Diffstat (limited to 'ishtar_common/models_imports.py')
-rw-r--r--ishtar_common/models_imports.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index d1ffb3656..2dec39c84 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -44,7 +44,8 @@ from ishtar_common.utils import create_slug, \
put_session_var, get_session_var, num2col
from ishtar_common.data_importer import Importer, ImportFormater, \
IntegerFormater, FloatFormater, UnicodeFormater, DateFormater, \
- TypeFormater, YearFormater, StrToBoolean, FileFormater, InseeFormater
+ TypeFormater, YearFormater, StrToBoolean, FileFormater, InseeFormater, \
+ ImporterError
if settings.USE_BACKGROUND_TASK:
from background_task import background
@@ -1028,16 +1029,25 @@ class Import(models.Model):
return vals
except UnicodeDecodeError:
pass # try the next encoding
+ except unicodecsv.Error:
+ raise ImporterError(_(u"Error in the CSV file."))
if tmpdir:
shutil.rmtree(tmpdir)
return []
- def initialize(self, user=None):
+ def initialize(self, user=None, session_key=None):
self.state = 'AP'
self.end_date = datetime.datetime.now()
self.save()
- self.get_importer_instance().initialize(self.data_table,
- user=user, output='db')
+ try:
+ self.get_importer_instance().initialize(
+ self.data_table, user=user, output='db')
+ except ImporterError as e:
+ if session_key:
+ put_session_message(session_key, e.msg, "danger")
+ self.state = 'C'
+ self.save()
+ return
self.state = 'A'
self.end_date = datetime.datetime.now()
self.save()