summaryrefslogtreecommitdiff
path: root/ishtar_common/data_importer.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-05-06 15:29:19 +0200
committerÉtienne Loks <etienne.loks@proxience.com>2015-05-06 15:29:19 +0200
commit35b163e7626a0f556ad32b303c1b9fa94cdf1d3e (patch)
treed24f8ac1696113693411e8b9adc32b428e120e41 /ishtar_common/data_importer.py
parent8491b7c2cd6613394bed5ca95db77225e159d99e (diff)
downloadIshtar-35b163e7626a0f556ad32b303c1b9fa94cdf1d3e.tar.bz2
Ishtar-35b163e7626a0f556ad32b303c1b9fa94cdf1d3e.zip
Manage link between import and imported object - Auto-delete imported object when deleting import
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r--ishtar_common/data_importer.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 8d53d78f1..2963fa680 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -625,6 +625,9 @@ class Importer(object):
data['history_modifier'] = self.history_modifier
obj, created = self.get_object(self.OBJECT_CLS, data)
+ if self.import_instance and hasattr(obj, 'imports'):
+ obj.imports.add(self.import_instance)
+
if created:
self.number_created += 1
else:
@@ -660,6 +663,8 @@ class Importer(object):
for k in data['defaults']:
setattr(t_obj, k, data['defaults'][k])
t_obj.save()
+ if self.import_instance and hasattr(t_obj, 'imports'):
+ t_obj.imports.add(self.import_instance)
for formater, val in self._post_processing:
formater.post_process(obj, data, val, owner=self.history_modifier)
@@ -789,11 +794,15 @@ class Importer(object):
val = data.pop(attribute)
model = field_object.model
if val.__class__ != model and type(val) == dict:
+ val['defaults'] = val.get('defaults', {})
if 'history_modifier' in \
model._meta.get_all_field_names():
- val['history_modifier'] = self.history_modifier
+ val['defaults']['history_modifier'] = \
+ self.history_modifier
val, created = field_object.model.objects.get_or_create(
**val)
+ if self.import_instance and hasattr(val, 'imports'):
+ val.imports.add(self.import_instance)
m2ms.append((attribute, val))
path = tuple(path)
if path in self._defaults:
@@ -814,6 +823,8 @@ class Importer(object):
dct = create_dict.copy()
dct['defaults'] = defaults
obj, created = cls.objects.get_or_create(**create_dict)
+ if self.import_instance and hasattr(obj, 'imports'):
+ obj.imports.add(self.import_instance)
except IntegrityError as e:
raise IntegrityError(e.message)
except: