diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/admin.py | 2 | ||||
| -rw-r--r-- | ishtar_common/models.py | 12 | ||||
| -rw-r--r-- | ishtar_common/serializers.py | 30 | ||||
| -rw-r--r-- | ishtar_common/tasks.py | 1 | 
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()  | 
