From 01ae8944b920f2a8d3204cf8e4cbb4721c7f74b9 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 19 Mar 2019 19:29:50 +0100 Subject: Manage import in background mode --- example_project/settings.py | 3 ++- ishtar_common/data_importer.py | 1 + ishtar_common/models_imports.py | 25 +++++++++++++------------ ishtar_common/views.py | 4 +++- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/example_project/settings.py b/example_project/settings.py index 3ffea90b9..168f17b06 100644 --- a/example_project/settings.py +++ b/example_project/settings.py @@ -19,7 +19,8 @@ if "test" in sys.argv: IMAGE_MAX_SIZE = (1280, 960) # put None if no resizing THUMB_MAX_SIZE = (600, 600) -DISABLE_TASK_TIMEOUT = False +# DISABLE_TASK_TIMEOUT = False # problematic for now +DISABLE_TASK_TIMEOUT = True CACHE_TASK_TIMEOUT = 4 CACHE_SMALLTIMEOUT = 60 CACHE_TIMEOUT = 3600 diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 7088eee08..72b42dd71 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -922,6 +922,7 @@ class Importer(object): getattr(item, func)(context, value) except ImporterError as msg: self.errors.append((idx_line, None, msg)) + print("OK - post - {}".format(item)) return item def initialize(self, table, output='silent', choose_default=False, diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 20c3bf9c4..5b1493173 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -856,20 +856,20 @@ delayed_check = None if settings.USE_BACKGROUND_TASK: @task() - def delayed_import(import_pk, session_key): + def delayed_import(import_pk): try: imp = Import.objects.get(pk=import_pk) except Import.DoesNotExist: pass - imp.importation(session_key=session_key) + imp.importation() @task() - def delayed_check(import_pk, session_key): + def delayed_check(import_pk): try: imp = Import.objects.get(pk=import_pk) except Import.DoesNotExist: pass - imp.check_modified(session_key=session_key) + imp.check_modified() class Import(models.Model): @@ -1132,7 +1132,7 @@ class Import(models.Model): self.state = 'HQ' self.end_date = datetime.datetime.now() self.save() - return delayed_check(self.pk, session_key) + return delayed_check.delay(self.pk) def check_modified(self, session_key=None): self.state = 'HP' @@ -1191,9 +1191,9 @@ class Import(models.Model): self.changed_checked = True self.save() - def delayed_importation(self, session_key): + def delayed_importation(self, request, session_key): if not settings.USE_BACKGROUND_TASK: - return self.importation(session_key=session_key) + return self.importation(request=request, session_key=session_key) put_session_message( session_key, str(_(u"Import {} added to the queue")).format(self.name), @@ -1201,10 +1201,11 @@ class Import(models.Model): self.state = 'IQ' self.end_date = datetime.datetime.now() self.save() - return delayed_import(self.pk, session_key) + return delayed_import.delay(self.pk) def importation(self, session_key=None, line_to_process=None, - simulate=False, return_importer_and_data=False): + simulate=False, return_importer_and_data=False, + request=None): self.state = 'IP' self.end_date = datetime.datetime.now() self.save() @@ -1261,10 +1262,10 @@ class Import(models.Model): msg = str(_(u"Import {} finished with no errors")).format( self.name) msg_cls = "primary" - if session_key: + if session_key and request: put_session_message(session_key, msg, msg_cls) - ids = self.request.session['current_import_id'] \ - if 'current_import_id' in self.request.session else [] + ids = request.session['current_import_id'] \ + if 'current_import_id' in request.session else [] ids.append(self.pk) put_session_var(session_key, 'current_import_id', ids) if importer.match_table: diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 1109b2dc9..7fa69eb66 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1107,7 +1107,9 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): session_key=request.session.session_key) elif action == 'I': if settings.USE_BACKGROUND_TASK: - imprt.delayed_importation(request.session.session_key) + imprt.delayed_importation( + request, request.session.session_key + ) else: imprt.importation() elif action == 'CH': -- cgit v1.2.3