summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-09-09 16:05:49 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-12 12:20:58 +0100
commit16512652b69b7b14a6f0ff76a95b990763f37f15 (patch)
tree97b99b2ebc78e70a133839a6447e3a2d208c9843
parente8472937c192bcce28a7a112fdf7a420e7486cfc (diff)
downloadIshtar-16512652b69b7b14a6f0ff76a95b990763f37f15.tar.bz2
Ishtar-16512652b69b7b14a6f0ff76a95b990763f37f15.zip
Migration to Django 2.2 - fixes
- restore serialized - manage protected data (do not delete) - fix path raising suspicious operation (use relative path)
-rw-r--r--ishtar_common/serializers.py15
-rw-r--r--ishtar_common/tests.py3
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",