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.py23
1 files changed, 19 insertions, 4 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index defa5b091..af8cc461e 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -1068,6 +1068,7 @@ class Importer(object):
sys.stdout.write("\n")
results = []
for idx_line, line in enumerate(table):
+ self.idx_line = idx_line
if line_to_process is not None:
if line_to_process != idx_line:
continue
@@ -1381,6 +1382,8 @@ class Importer(object):
many_values = data.pop(attribute)
if hasattr(field_object, 'rel'):
model = field_object.rel.to
+ elif hasattr(field_object, 'related_model'):
+ model = field_object.related_model
elif hasattr(field_object, 'to'):
model = field_object.to
elif hasattr(field_object, 'model'):
@@ -1489,6 +1492,12 @@ class Importer(object):
unicode(
_(u"Importer configuration error: "
u"\"{}\".")).format(e.message))
+ except Exception as e:
+ msg = unicode(
+ _(u"Import error: {} - \"{}\".")
+ ).format(model, e.message.decode('utf-8'))
+ e.message = msg
+ raise e
else:
get_v = v.copy()
if 'defaults' in get_v:
@@ -1566,8 +1575,11 @@ class Importer(object):
_(u"Importer configuration error: field \"{}\" does not exist "
u"for {}.")).format(attribute, cls._meta.verbose_name))
if field_object.many_to_many:
- m2ms += self._get_field_m2m(attribute, data, c_path,
- new_created, field_object)
+ try:
+ m2ms += self._get_field_m2m(attribute, data, c_path,
+ new_created, field_object)
+ except Exception as e:
+ self.errors.append((self.idx_line, None, e.message))
return
if not hasattr(field_object, 'rel') or not field_object.rel:
return
@@ -1664,7 +1676,7 @@ class Importer(object):
defaults = {}
if path in self._defaults:
for k in self._defaults[path]:
- if k not in data or not data[k]:
+ if (k not in data or not data[k]) and self._defaults[path][k]:
defaults[k] = self._defaults[path][k]
if 'history_modifier' in create_dict:
@@ -1698,7 +1710,10 @@ class Importer(object):
for k in dct.keys():
if k not in self.UNICITY_KEYS \
and k != 'defaults':
- defaults[k] = dct.pop(k)
+ if dct[k]:
+ defaults[k] = dct.pop(k)
+ else:
+ dct.pop(k)
if self.simulate:
q = cls.objects.filter(**dct)