diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-03-15 09:52:32 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-03-27 17:52:07 +0200 |
commit | 54daa385a241ad272abe9e06a63a0da36ff17749 (patch) | |
tree | a4071ff51a08618ad9d8c3f4fec1d0dc7869ca11 /ishtar_common/models_imports.py | |
parent | 96ce026e838b0f391d995a69d7eaca3abaf1912b (diff) | |
download | Ishtar-54daa385a241ad272abe9e06a63a0da36ff17749.tar.bz2 Ishtar-54daa385a241ad272abe9e06a63a0da36ff17749.zip |
Step by step import - WIP - refs #3975
Diffstat (limited to 'ishtar_common/models_imports.py')
-rw-r--r-- | ishtar_common/models_imports.py | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index c3fbaa92d..10124b024 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -170,7 +170,7 @@ class ImporterType(models.Model): if column.export_field_name: LINE_EXPORT_FORMAT.append( ImportFormater(column.export_field_name, - label=column.label) + label=column.label) ) continue force_news = [] @@ -196,6 +196,7 @@ class ImporterType(models.Model): formater_kwargs['label'] = column.label formater_kwargs['required'] = column.required formater_kwargs['force_new'] = force_news + formater_kwargs['comment'] = column.description if column.export_field_name: formater_kwargs['export_field_name'] = [ column.export_field_name] @@ -865,9 +866,11 @@ class Import(models.Model): if self.state == 'A': actions.append(('A', _(u"Re-analyse"))) actions.append(('I', _(u"Launch import"))) + actions.append(('IS', _(u"Step by step import"))) if self.state in ('F', 'FE'): actions.append(('A', _(u"Re-analyse"))) actions.append(('I', _(u"Re-import"))) + actions.append(('IS', _(u"Step by step import"))) actions.append(('AC', _(u"Archive"))) if self.state == 'AC': actions.append(('A', _(u"Unarchive"))) @@ -946,21 +949,22 @@ class Import(models.Model): self.save() return delayed_import(self.pk, session_key) - def importation(self, session_key=None): + def importation(self, session_key=None, line_to_process=None, + simulate=False, return_importer_and_data=False): self.state = 'IP' self.end_date = datetime.datetime.now() self.save() importer = self.get_importer_instance() try: - importer.importation(self.data_table, user=self.user) + data = importer.importation( + self.data_table, user=self.user, + line_to_process=line_to_process, simulate=simulate) except IOError: + error_message = unicode(_(u"Error on imported file: {}")).format( + self.imported_file) + importer.errors = [error_message] if session_key: - put_session_message( - session_key, - unicode(_(u"Error on imported file: {}")).format( - self.imported_file), - "warning" - ) + put_session_message(session_key, error_message, "warning") ids = get_session_var(session_key, 'current_import_id') if not ids: ids = [] @@ -968,7 +972,9 @@ class Import(models.Model): put_session_var(session_key, 'current_import_id', ids) self.state = 'FE' self.save() - return + if not return_importer_and_data: + return + return importer, None # result file filename = slugify(self.importer_type.name) now = datetime.datetime.now().isoformat('-').replace(':', '') @@ -1006,6 +1012,8 @@ class Import(models.Model): ) self.end_date = datetime.datetime.now() self.save() + if return_importer_and_data: + return importer, data def archive(self): self.state = 'AC' |