From 16512652b69b7b14a6f0ff76a95b990763f37f15 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 9 Sep 2021 16:05:49 +0200 Subject: Migration to Django 2.2 - fixes - restore serialized - manage protected data (do not delete) - fix path raising suspicious operation (use relative path) --- ishtar_common/serializers.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'ishtar_common/serializers.py') 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 ( -- cgit v1.2.3