diff options
| -rw-r--r-- | example_project/settings.py | 6 | ||||
| -rw-r--r-- | ishtar_common/models_imports.py | 39 | ||||
| -rw-r--r-- | ishtar_common/views.py | 7 | 
3 files changed, 37 insertions, 15 deletions
diff --git a/example_project/settings.py b/example_project/settings.py index d488683d3..708c71235 100644 --- a/example_project/settings.py +++ b/example_project/settings.py @@ -160,7 +160,6 @@ INSTALLED_APPS = [      'archaeological_finds',      'ajax_select',      'compressor', -    'background_task',      # 'debug_toolbar',  ] @@ -221,6 +220,8 @@ LOGGING = {      },  } +USE_BACKGROUND_TASK = False +  # Ishtar custom  SRID = 27572  SURFACE_SRID = 2154 @@ -283,6 +284,9 @@ if DEBUG:          elif 'console' not in LOGGING['loggers'][logger]['handlers']:              LOGGING['loggers'][logger]['handlers'] += ['console'] +if USE_BACKGROUND_TASK: +    INSTALLED_APPS.append('background_task') +  if DJANGO_EXTENSIONS:      INSTALLED_APPS.append('django_extensions') 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))  | 
