diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/serializers.py | 15 | ||||
-rw-r--r-- | ishtar_common/tests.py | 3 |
2 files changed, 15 insertions, 3 deletions
diff --git a/ishtar_common/serializers.py b/ishtar_common/serializers.py index 507173642..071007ab2 100644 --- a/ishtar_common/serializers.py +++ b/ishtar_common/serializers.py @@ -8,6 +8,7 @@ from zipfile import ZipFile from django.apps import apps from django.conf import settings from django.core.serializers import deserialize +from django.db.models.deletion import ProtectedError from django.contrib.auth.models import Group, Permission @@ -438,7 +439,19 @@ def restore_serialized( if not model or (current_model and current_model != model): continue if delete_existing: - model.objects.all().delete() + try: + model.objects.all().delete() + deleted = True + except ProtectedError: + deleted = False + if not deleted: + # only delete not referenced + for item in model.objects.all(): + try: + item.delete() + except ProtectedError: + pass + data = zip_file.read(json_filename).decode("utf-8") # regenerate labels, add a new version, etc. historized = hasattr(model, "history_modifier") and ( diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 1b430cacd..fed0ccf58 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -2409,8 +2409,7 @@ class ImportTest(TestCase): klass="ishtar_common.models.Person", name="Person" ) importer_type = models.ImporterType.objects.create(associated_models=imp_model) - - dest = os.path.join(settings.MEDIA_ROOT, "MCC-operations-example.csv") + dest = os.path.join("media", "MCC-operations-example.csv") shutil.copy( settings.ROOT_PATH + "../archaeological_operations/tests/MCC-operations-example.csv", |