diff options
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 |
commit | 16512652b69b7b14a6f0ff76a95b990763f37f15 (patch) | |
tree | 97b99b2ebc78e70a133839a6447e3a2d208c9843 /ishtar_common | |
parent | e8472937c192bcce28a7a112fdf7a420e7486cfc (diff) | |
download | Ishtar-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)
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", |