summaryrefslogtreecommitdiff
path: root/ishtar_common/data_importer.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r--ishtar_common/data_importer.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 85c5437d1..8ce613755 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()
@@ -1005,7 +1006,7 @@ class Importer(object):
@classmethod
def _field_name_to_data_dict(
cls, field_name, value, data, force_value=False, concat=False,
- concat_str=u"", force_new=False):
+ concat_str="", force_new=False):
field_names = field_name
if type(field_names) not in (list, tuple):
field_names = [field_name]
@@ -1027,8 +1028,8 @@ class Importer(object):
if not value:
continue
current_data[key] = (
- current_data[key] + concat_str) \
- if current_data[key] else u""
+ current_data[key] + (concat_str or "")) \
+ if current_data[key] else ""
current_data[key] += value
elif force_value and value:
if concat_str and key in current_data \
@@ -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: