From 254b457cf20d21aa80ed2761f88909ca4c83f67f Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 13 Jan 2020 19:33:55 +0100 Subject: Import: close opened files --- ishtar_common/data_importer.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'ishtar_common/data_importer.py') diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 85c5437d1..02a100325 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -890,6 +890,7 @@ class Importer(object): self.match_table = {} self.concats = set() self.concat_str = {} + self.to_be_close = [] if import_instance and import_instance.imported_images: self.archive = import_instance.imported_images self._defaults = self.DEFAULTS.copy() @@ -1104,9 +1105,14 @@ class Importer(object): results.append(self._line_processing(idx_line, line)) except ImporterError as msg: self.errors.append((idx_line, None, msg)) + for item in self.to_be_close: + item.close() return results def _line_processing(self, idx_line, line): + for item in self.to_be_close: + item.close() + self.to_be_close = [] self.idx_line = idx_line if self.skip_lines > idx_line: self.validity.append(line) @@ -1302,7 +1308,6 @@ class Importer(object): # keep an empty value if there is only empty values values = [values[0]] formated_values = [] - field_name = formater.field_name force_new = formater.force_new if type(field_name) in (list, tuple): @@ -1342,6 +1347,10 @@ class Importer(object): return if formater.value_format and value is not None and value != "": value = formater.value_format.format(value) + if hasattr(value, "close"): + # opened file are kept - they need to be listed and closed + # later + self.to_be_close.append(value) formated_values.append(value) if hasattr(func, 'match_table'): if field_name not in self.match_table: -- cgit v1.2.3