diff options
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 |
commit | 0049a4f8ad6e1dfa9a5086131a631267621d6058 (patch) | |
tree | ddc953d54c1858b4755c8f1db10b7f24b1f867cc /ishtar_common/models_imports.py | |
parent | 810a87e4b7e15d6ffe4b7b04538db264fb755318 (diff) | |
download | Ishtar-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.py | 18 |
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() |