diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-03-08 13:49:08 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-03-08 13:49:08 +0100 |
commit | 89c07c34691b71f5cf572134244fd7e272631013 (patch) | |
tree | 76533d9bc0562b05355eb79b01ee7ad71756f692 /ishtar_common/models_imports.py | |
parent | ee4daac3b1d22e3ff3890efee015253f3e4b9e7a (diff) | |
download | Ishtar-89c07c34691b71f5cf572134244fd7e272631013.tar.bz2 Ishtar-89c07c34691b71f5cf572134244fd7e272631013.zip |
Manage autorefresh for import page (refs #3951)
Diffstat (limited to 'ishtar_common/models_imports.py')
-rw-r--r-- | ishtar_common/models_imports.py | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index e0a144adc..b6b68d5a6 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -39,7 +39,8 @@ from django.utils.functional import cached_property from django.utils.translation import ugettext_lazy as _, pgettext_lazy from ishtar_common.utils import create_slug, \ - get_all_related_m2m_objects_with_model, put_session_message + get_all_related_m2m_objects_with_model, put_session_message, \ + put_session_var, get_session_var from ishtar_common.data_importer import Importer, ImportFormater, \ IntegerFormater, FloatFormater, UnicodeFormater, DateFormater, \ TypeFormater, YearFormater, StrToBoolean, FileFormater, InseeFormater @@ -822,8 +823,8 @@ class Import(models.Model): help_text=_(u'If set to true, do not overload existing values.')) creation_date = models.DateTimeField( _(u"Creation date"), auto_now_add=True, blank=True, null=True) - end_date = models.DateTimeField(_(u"End date"), blank=True, - null=True, editable=False) + end_date = models.DateTimeField(_(u"End date"), auto_now_add=True, + blank=True, null=True, editable=False) seconds_remaining = models.IntegerField( _(u"Remaining seconds"), blank=True, null=True, editable=False) @@ -922,24 +923,29 @@ class Import(models.Model): def initialize(self, user=None): self.state = 'AP' + self.end_date = datetime.datetime.now() self.save() self.get_importer_instance().initialize(self.data_table, user=user, output='db') self.state = 'A' + self.end_date = datetime.datetime.now() 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") + put_session_message( + session_key, + unicode(_(u"Import {} added to the queue")).format(self.name), + "info") self.state = 'IQ' + self.end_date = datetime.datetime.now() self.save() return delayed_import(self.pk, session_key) def importation(self, session_key=None): self.state = 'IP' + self.end_date = datetime.datetime.now() self.save() importer = self.get_importer_instance() try: @@ -952,6 +958,11 @@ class Import(models.Model): self.imported_file), "warning" ) + ids = get_session_var(session_key, 'current_import_id') + if not ids: + ids = [] + ids.append(self.pk) + put_session_var(session_key, 'current_import_id', ids) self.state = 'FE' self.save() return @@ -970,26 +981,32 @@ class Import(models.Model): ContentFile(importer.get_csv_errors().encode('utf-8')) ) msg = unicode(_(u"Import {} finished with errors")).format( - self.imported_file) + self.name) msg_cls = "warning" else: self.state = 'F' self.error_file = None msg = unicode(_(u"Import {} finished with no errors")).format( - self.imported_file) + self.name) msg_cls = "primary" if session_key: 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.append(self.pk) + put_session_var(session_key, 'current_import_id', ids) if importer.match_table: match_file = filename + "_match_%s.csv" % now self.match_file.save( match_file, ContentFile(importer.get_csv_matches().encode('utf-8')) ) + self.end_date = datetime.datetime.now() self.save() def archive(self): self.state = 'AC' + self.end_date = datetime.datetime.now() self.save() def get_all_imported(self): |