summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-03-19 19:29:50 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-17 13:21:27 +0200
commit01ae8944b920f2a8d3204cf8e4cbb4721c7f74b9 (patch)
tree706eeda5cdb1258cdf0267ad3c5d5ec86bdaacff
parent92926de96ad9422a989a14178dc813d9b07cb811 (diff)
downloadIshtar-01ae8944b920f2a8d3204cf8e4cbb4721c7f74b9.tar.bz2
Ishtar-01ae8944b920f2a8d3204cf8e4cbb4721c7f74b9.zip
Manage import in background mode
-rw-r--r--example_project/settings.py3
-rw-r--r--ishtar_common/data_importer.py1
-rw-r--r--ishtar_common/models_imports.py25
-rw-r--r--ishtar_common/views.py4
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':