diff options
| -rw-r--r-- | ishtar_common/models_imports.py | 18 | ||||
| -rw-r--r-- | ishtar_common/views.py | 3 | 
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) | 
