summaryrefslogtreecommitdiff
path: root/ishtar_common/serializers.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/serializers.py')
-rw-r--r--ishtar_common/serializers.py30
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