diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-12-13 16:08:19 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-12-13 16:08:19 +0100 |
commit | 51f788fd4e81186be2f7b7b4459d3d90a7b47bf2 (patch) | |
tree | 232659156f76ff7664139d963dac8d8c68e1d43f /chimere/utils.py | |
parent | 70811d699e68c075ed3cae543cbb8b695d386730 (diff) | |
parent | 3aaae876d73a9c16d2961bea9ae2012ae0bc5b0e (diff) | |
download | Chimère-51f788fd4e81186be2f7b7b4459d3d90a7b47bf2.tar.bz2 Chimère-51f788fd4e81186be2f7b7b4459d3d90a7b47bf2.zip |
Merge branch 'master' into saclay
Conflicts:
chimere/admin.py
chimere/locale/fr/LC_MESSAGES/django.po
chimere/tests.py
chimere/utils.py
Diffstat (limited to 'chimere/utils.py')
-rw-r--r-- | chimere/utils.py | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/chimere/utils.py b/chimere/utils.py index 4a12e37..0d97757 100644 --- a/chimere/utils.py +++ b/chimere/utils.py @@ -83,23 +83,28 @@ class ImportManager: try: item = None if pk: - try: - item = cls.objects.get(pk=pk) - except: - pass - if not item: - item = cls.objects.get(**dct_import) - if version and item.import_version == int(version): + ref_item = cls.objects.get(pk=pk) + else: + ref_item = cls.objects.get(**dct_import) + if version and ref_item.import_version == int(version): # no update since the last import - return item, None, None - for k in values: - setattr(item, k, values[k]) - try: - item.save() - except TypeError: - # error on data source - return None, False, False - updated = True + return ref_item, None, None + if not self.importer_instance.overwrite \ + and ref_item.modified_since_import: + dct_import['ref_item'] = ref_item + else: + item = ref_item + for k in values: + setattr(item, k, values[k]) + try: + item.save() + # force the modified_since_import status + item.modified_since_import = False + item.save() + except TypeError: + # error on data source + return None, False, False + updated = True except ObjectDoesNotExist: pass if not item: |