diff options
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:  | 
