diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/data_importer.py | 8 | ||||
| -rw-r--r-- | ishtar_common/models_imports.py | 13 | 
2 files changed, 17 insertions, 4 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index d44a19319..baf943068 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -1574,6 +1574,9 @@ class Importer(object):          if attribute == 'data':  # json field              # no need to do anything              return +        if attribute == 'get_default': +            # force evaluation of default value for this field +            return          try:              field_object = cls._meta.get_field(attribute)          except FieldDoesNotExist: @@ -1720,6 +1723,11 @@ class Importer(object):                                      defaults[k] = dct.pop(k)                                  else:                                      dct.pop(k) +                    if "get_default" in dct and dct["get_default"]: +                        dct.pop("get_default") +                        new_dct = defaults.copy() +                        new_dct.update(dct) +                        dct = new_dct                      obj = None                      if self.simulate: diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index a774cef6d..315feba7b 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -241,7 +241,9 @@ def get_associated_model(parent_model, keys):          OBJECT_CLS = parent_model      fields = get_model_fields(OBJECT_CLS)      for idx, item in enumerate(keys): -        if not idx: +        if item in (u"-", u""): +            model = None +        elif not idx:              if item not in fields:                  raise ImporterError(                      unicode( @@ -286,7 +288,7 @@ class ImporterDefault(models.Model):      @property      def keys(self): -        return tuple(self.target.split('__')) +        return tuple(t for t in self.target.split('__') if t not in (u"-", u""))      @property      def associated_model(self): @@ -297,7 +299,10 @@ class ImporterDefault(models.Model):      def values(self):          values = {}          for default_value in self.default_values.all(): -            values[default_value.target] = default_value.get_value() +            target = default_value.target +            if target == u"-": +                target = u"" +            values[target] = default_value.get_value()          return values @@ -341,7 +346,7 @@ class ImporterDefaultValues(models.Model):              return          field = fields[target]          if not hasattr(field, 'rel') or not hasattr(field.rel, 'to'): -            return +            return self.value          model = field.rel.to          # if value is an id          try:  | 
