diff options
Diffstat (limited to 'ishtar_common/data_importer.py')
| -rw-r--r-- | ishtar_common/data_importer.py | 17 | 
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: | 
