diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-09 18:54:49 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-09 18:56:29 +0200 |
commit | 811c4a5bc6d365a3f1f8faf4ed75a8798595f32b (patch) | |
tree | 9a30e7431219b8e673bc0347d1c31baccaf2e442 /ishtar_common/serializers.py | |
parent | a2e9910ac21364a72440d0563db3f677f2a0297e (diff) | |
download | Ishtar-811c4a5bc6d365a3f1f8faf4ed75a8798595f32b.tar.bz2 Ishtar-811c4a5bc6d365a3f1f8faf4ed75a8798595f32b.zip |
Serializers: admin and feedback improvment
Diffstat (limited to 'ishtar_common/serializers.py')
-rw-r--r-- | ishtar_common/serializers.py | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/ishtar_common/serializers.py b/ishtar_common/serializers.py index 66f771e3c..99ec79933 100644 --- a/ishtar_common/serializers.py +++ b/ishtar_common/serializers.py @@ -298,7 +298,17 @@ def restore_serialized(archive_name, delete_existing=False): ("warehouse", WAREHOUSE_MODEL_LIST), ("finds", FIND_MODEL_LIST), ) + result = [] namelist = zip_file.namelist() + + # restore media + if "media.zip" in namelist: + with tempfile.TemporaryDirectory() as tmp_dir_name: + zip_file.extract("media.zip", tmp_dir_name) + with zipfile.ZipFile( + tmp_dir_name + os.sep + "media.zip", 'r') as media_zip: + media_zip.extractall(settings.MEDIA_ROOT) + for current_dir, model_list in DIRS: for current_model in model_list: for json_filename in namelist: @@ -311,12 +321,16 @@ def restore_serialized(archive_name, delete_existing=False): if delete_existing: model.objects.all().delete() data = zip_file.read(json_filename).decode("utf-8") - for obj in deserialize("json", data): + idx = -1 + for idx, obj in enumerate(deserialize("json", data)): obj.save() - # restore media - if "media.zip" in namelist: - with tempfile.TemporaryDirectory() as tmp_dir_name: - zip_file.extract("media.zip", tmp_dir_name) - with zipfile.ZipFile( - tmp_dir_name + os.sep + "media.zip", 'r') as media_zip: - media_zip.extractall(settings.MEDIA_ROOT) + # force reindex + if hasattr(model, "CACHED_LABELS") or \ + hasattr(model, "cached_label"): + obj = model.objects.get(id=obj.object.id) + obj.skip_history_when_saving = True + obj._no_move = True + obj.save() + if idx >= 0: + result.append((model.__name__, idx + 1)) + return result |