summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
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
commit811c4a5bc6d365a3f1f8faf4ed75a8798595f32b (patch)
tree9a30e7431219b8e673bc0347d1c31baccaf2e442 /ishtar_common
parenta2e9910ac21364a72440d0563db3f677f2a0297e (diff)
downloadIshtar-811c4a5bc6d365a3f1f8faf4ed75a8798595f32b.tar.bz2
Ishtar-811c4a5bc6d365a3f1f8faf4ed75a8798595f32b.zip
Serializers: admin and feedback improvment
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/admin.py2
-rw-r--r--ishtar_common/models.py12
-rw-r--r--ishtar_common/serializers.py30
-rw-r--r--ishtar_common/tasks.py1
4 files changed, 30 insertions, 15 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index eb2ac3a0b..75e30a49c 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -1438,7 +1438,7 @@ launch_export_action.short_description = _("Launch export")
class ExportTaskAdmin(admin.ModelAdmin):
readonly_fields = ("result", "result_info")
exclude = ('creation_date', 'launch_date', 'finished_date')
- list_display = ["label", 'state', "result_info", 'creation_date',
+ list_display = ["label", 'state', "result_info", "result", 'creation_date',
'launch_date', 'finished_date']
list_filter = ['state']
actions = [launch_export_action]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 815c86d07..8da6c9bba 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -5715,13 +5715,13 @@ class ExportTask(models.Model):
launch_date = models.DateTimeField(null=True, blank=True)
finished_date = models.DateTimeField(null=True, blank=True)
result = models.FileField(_("Result"), null=True, blank=True,
- upload_to="exports")
+ upload_to="exports/%Y/%m/")
result_info = models.TextField(_("Result information"), null=True,
blank=True)
class Meta:
- verbose_name = _("Export task")
- verbose_name_plural = _("Export tasks")
+ verbose_name = _("Archive - Export")
+ verbose_name_plural = _("Archive - Export")
ordering = ['creation_date']
def __str__(self):
@@ -5756,11 +5756,11 @@ class ImportTask(models.Model):
delete_before = models.BooleanField(
_("Delete before adding"), default=False,
help_text=_("Delete existing items before adding"))
- source = models.FileField(_("Source"), upload_to="imports")
+ source = models.FileField(_("Source"), upload_to="imports/%Y/%m/")
class Meta:
- verbose_name = _("Import task")
- verbose_name_plural = _("Import tasks")
+ verbose_name = _("Archive - Import")
+ verbose_name_plural = _("Archive - Imports")
ordering = ['creation_date']
def __str__(self):
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
diff --git a/ishtar_common/tasks.py b/ishtar_common/tasks.py
index 91695397f..2b8806b32 100644
--- a/ishtar_common/tasks.py
+++ b/ishtar_common/tasks.py
@@ -143,6 +143,7 @@ def launch_export(export_task):
os.remove(archive_name)
export_task.finished_date = datetime.datetime.now()
export_task.state = 'F'
+ export_task.result_info = str(_("Export finished"))
export_task.save()