diff options
Diffstat (limited to 'ishtar_common/serializers.py')
-rw-r--r-- | ishtar_common/serializers.py | 15 |
1 files changed, 14 insertions, 1 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 ( |