diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/models_imports.py | 39 | ||||
-rw-r--r-- | ishtar_common/views.py | 7 |
2 files changed, 32 insertions, 14 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 4436d4c52..e0a144adc 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -17,7 +17,6 @@ # See the file COPYING for details. -from background_task import background import csv import datetime from importlib import import_module @@ -45,6 +44,11 @@ from ishtar_common.data_importer import Importer, ImportFormater, \ IntegerFormater, FloatFormater, UnicodeFormater, DateFormater, \ TypeFormater, YearFormater, StrToBoolean, FileFormater, InseeFormater +if settings.USE_BACKGROUND_TASK: + from background_task import background +else: + background = lambda x: x + logger = logging.getLogger(__name__) IMPORTER_CLASSES = {} @@ -769,14 +773,17 @@ ENCODINGS = [(settings.ENCODING, settings.ENCODING), (settings.ALT_ENCODING, settings.ALT_ENCODING), ('utf-8', 'utf-8')] +delayed_import = None + -@background(schedule=1) -def delayed_import(import_pk, session_key): - try: - imp = Import.objects.get(pk=import_pk) - except Import.DoesNotExist: - pass - imp.importation(session_key=session_key) +if settings.USE_BACKGROUND_TASK: + @background(schedule=1) + def delayed_import(import_pk, session_key): + try: + imp = Import.objects.get(pk=import_pk) + except Import.DoesNotExist: + pass + imp.importation(session_key=session_key) class Import(models.Model): @@ -854,11 +861,9 @@ class Import(models.Model): if self.state == 'A': actions.append(('A', _(u"Re-analyse"))) actions.append(('I', _(u"Launch import"))) - actions.append(('ID', _(u"Launch import as background task"))) if self.state in ('F', 'FE'): actions.append(('A', _(u"Re-analyse"))) actions.append(('I', _(u"Re-import"))) - actions.append(('ID', _(u"Re-import as background task"))) actions.append(('AC', _(u"Archive"))) if self.state == 'AC': actions.append(('A', _(u"Unarchive"))) @@ -924,6 +929,8 @@ class Import(models.Model): self.save() def delayed_importation(self, session_key): + if not settings.USE_BACKGROUND_TASK: + return self.importation(session_key=session_key) put_session_message(session_key, unicode(_(u"Import added to the queue")), "warning") @@ -940,7 +947,9 @@ class Import(models.Model): except IOError: if session_key: put_session_message( - session_key, unicode(_(u"Error on imported file")), + session_key, + unicode(_(u"Error on imported file: {}")).format( + self.imported_file), "warning" ) self.state = 'FE' @@ -960,9 +969,17 @@ class Import(models.Model): error_file, ContentFile(importer.get_csv_errors().encode('utf-8')) ) + msg = unicode(_(u"Import {} finished with errors")).format( + self.imported_file) + msg_cls = "warning" else: self.state = 'F' self.error_file = None + msg = unicode(_(u"Import {} finished with no errors")).format( + self.imported_file) + msg_cls = "primary" + if session_key: + put_session_message(session_key, msg, msg_cls) if importer.match_table: match_file = filename + "_match_%s.csv" % now self.match_file.save( diff --git a/ishtar_common/views.py b/ishtar_common/views.py index dfeff037d..66642090f 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1815,9 +1815,10 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): elif action == 'A': imprt.initialize(user=self.request.user.ishtaruser) elif action == 'I': - imprt.importation() - elif action == 'ID': - imprt.delayed_importation(request.session.session_key) + if settings.USE_BACKGROUND_TASK: + imprt.delayed_importation(request.session.session_key) + else: + imprt.importation() elif action == 'AC': imprt.archive() return HttpResponseRedirect(reverse(self.current_url)) |