summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models_imports.py18
-rw-r--r--ishtar_common/views.py3
2 files changed, 16 insertions, 5 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()
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 8b3e3c488..eed175753 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -991,7 +991,8 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView):
return HttpResponseRedirect(reverse('import_delete',
kwargs={'pk': imprt.pk}))
elif action == 'A':
- imprt.initialize(user=self.request.user.ishtaruser)
+ imprt.initialize(user=self.request.user.ishtaruser,
+ session_key=request.session.session_key)
elif action == 'I':
if settings.USE_BACKGROUND_TASK:
imprt.delayed_importation(request.session.session_key)