diff options
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 |
commit | 35b163e7626a0f556ad32b303c1b9fa94cdf1d3e (patch) | |
tree | d24f8ac1696113693411e8b9adc32b428e120e41 /ishtar_common/data_importer.py | |
parent | 8491b7c2cd6613394bed5ca95db77225e159d99e (diff) | |
download | Ishtar-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.py | 13 |
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: |