diff options
| -rw-r--r-- | ishtar_common/data_importer.py | 24 | ||||
| -rw-r--r-- | ishtar_common/models_imports.py | 3 | ||||
| -rw-r--r-- | ishtar_common/utils.py | 6 | 
3 files changed, 25 insertions, 8 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 95763ae09..c568f1861 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -36,7 +36,7 @@ from django.db.models import Q  from django.template.defaultfilters import slugify  from django.utils.translation import ugettext_lazy as _ -from ishtar_common.utils import get_all_field_names, update_data +from ishtar_common.utils import debug_line_no, get_all_field_names, update_data  NEW_LINE_BREAK = '#####@@@#####' @@ -1015,13 +1015,21 @@ class Importer(object):              for idx, key in enumerate(keys):                  if idx == (len(keys) - 1):  # last                      if concat: -                        if key not in current_data: -                            current_data[key] = "" -                        if not value: -                            continue -                        current_data[key] = (current_data[key] + concat_str) \ -                            if current_data[key] else u"" -                        current_data[key] += value +                        if isinstance(value, (list, tuple)): +                            if key not in current_data: +                                current_data[key] = [] +                            if not value: +                                continue +                            current_data[key] += value +                        else: +                            if key not in current_data: +                                current_data[key] = "" +                            if not value: +                                continue +                            current_data[key] = ( +                                    current_data[key] + concat_str) \ +                                if current_data[key] else u"" +                            current_data[key] += value                      elif force_value and value:                          if concat_str and key in current_data \                                  and current_data[key]: diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 5cb72bd18..e4d912c98 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -182,6 +182,7 @@ class ImporterType(models.Model):                  continue              force_news = []              concat_str = [] +            concat = []              for target in column.targets.all():                  ft = target.formater_type.get_formater_type(                      target, import_instance=import_instance) @@ -191,6 +192,7 @@ class ImporterType(models.Model):                  targets.append(target.target)                  concat_str.append(target.concat_str)                  force_news.append(target.force_new) +                concat.append(target.concat)              formater_kwargs = {}              if column.regexp_pre_filter:                  formater_kwargs['regexp'] = re.compile( @@ -198,6 +200,7 @@ class ImporterType(models.Model):              if column.value_format:                  formater_kwargs['value_format'] = \                      column.value_format.format_string +            formater_kwargs['concat'] = concat              formater_kwargs['concat_str'] = concat_str              formater_kwargs['duplicate_fields'] = [                  (field.field_name, field.force_new, field.concat, diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 401f88f82..4f48cb08b 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -21,6 +21,7 @@ from csv import QUOTE_ALL  import datetime  from functools import wraps  from itertools import chain +from inspect import currentframe, getframeinfo  import hashlib  import os  import random @@ -60,6 +61,11 @@ def dict_to_tuple(dct):      return tuple(values) +def debug_line_no(): +    cf = currentframe() +    return currentframe().f_back.f_lineno + +  class BColors:      """      Bash colors. Don't forget to finish your colored string with ENDC.  | 
