summaryrefslogtreecommitdiff
path: root/chimere/utils.py
diff options
context:
space:
mode:
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
commit51f788fd4e81186be2f7b7b4459d3d90a7b47bf2 (patch)
tree232659156f76ff7664139d963dac8d8c68e1d43f /chimere/utils.py
parent70811d699e68c075ed3cae543cbb8b695d386730 (diff)
parent3aaae876d73a9c16d2961bea9ae2012ae0bc5b0e (diff)
downloadChimè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.py37
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: