summaryrefslogtreecommitdiff
path: root/ishtar_common/data_importer.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-06-30 16:50:58 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-06-30 16:50:58 +0200
commit72b0a0276e70194666ff9110522f49f4e3f1476e (patch)
tree6a41f63eabed5f6f3f7537585d5ae3f3a00e4d00 /ishtar_common/data_importer.py
parent9fe30e305e1a114277e8473df415588bfacd188d (diff)
parent483fcd46fb60a597959bfde9d00bde4cc1822cd2 (diff)
downloadIshtar-72b0a0276e70194666ff9110522f49f4e3f1476e.tar.bz2
Ishtar-72b0a0276e70194666ff9110522f49f4e3f1476e.zip
Merge branch 'master' into v0.9
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r--ishtar_common/data_importer.py41
1 files changed, 28 insertions, 13 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 10957e74d..e11e72449 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -1400,20 +1400,35 @@ class Importer(object):
# get all related fields
new_created = {}
- for attribute in list(data.keys()):
- c_c_path = c_path[:]
- if not attribute:
- data.pop(attribute)
- continue
- if not data[attribute]:
- field_object, model, direct, m2m = \
- cls._meta.get_field_by_name(attribute)
- if m2m:
+ try:
+ for attribute in list(data.keys()):
+ c_c_path = c_path[:]
+ if not attribute:
data.pop(attribute)
- continue
- if attribute != '__force_new':
- self.get_field(cls, attribute, data, m2ms, c_c_path,
- new_created)
+ continue
+ if not data[attribute]:
+ field_object, model, direct, m2m = \
+ cls._meta.get_field_by_name(attribute)
+ if m2m:
+ data.pop(attribute)
+ continue
+ if attribute != '__force_new':
+ self.get_field(cls, attribute, data, m2ms, c_c_path,
+ new_created)
+ except (ValueError, IntegrityError) as e:
+ message = e.message
+ try:
+ message = e.message.decode('utf-8')
+ except (UnicodeDecodeError, UnicodeDecodeError):
+ message = ''
+ try:
+ data = unicode(data)
+ except UnicodeDecodeError:
+ data = ''
+ raise ImporterError(
+ "Erreur d'import %s %s, contexte : %s, erreur : %s"
+ % (unicode(cls), unicode("__".join(path)),
+ unicode(data), message))
create_dict = copy.deepcopy(data)
for k in create_dict.keys():