From 51f31dd7dfd62c2d9de75e83ccf1727190514157 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 9 Sep 2019 00:05:51 +0200 Subject: Serialization: manage export action in admin - optimizations --- ishtar_common/serializers_utils.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'ishtar_common/serializers_utils.py') diff --git a/ishtar_common/serializers_utils.py b/ishtar_common/serializers_utils.py index 4bd655269..ef36e2695 100644 --- a/ishtar_common/serializers_utils.py +++ b/ishtar_common/serializers_utils.py @@ -24,19 +24,23 @@ def get_model_from_filename(filename): return getattr(module, model_name) -def serialization_info(): +def serialization_info(info=None): site = Site.objects.get_current() - return { + base_info = { "serialize-version": SERIALIZATION_VERSION, "ishtar-version": get_version(), "domain": site.domain, "name": site.name, "date": datetime.datetime.now().isoformat() } + if info: + base_info.update(info) + return base_info def archive_serialization(result, archive_dir=None, archive=False, - return_empty_types=False, archive_name=None): + return_empty_types=False, archive_name=None, + info=None): """ Serialize all types models to JSON Used for import and export scripts @@ -78,7 +82,7 @@ def archive_serialization(result, archive_dir=None, archive=False, filename = tmpdirname + os.sep + base_filename with open(filename, "w") as json_file: json_file.write( - json.dumps(serialization_info(), indent=2) + json.dumps(serialization_info(info=info), indent=2) ) current_zip.write(filename, arcname=base_filename) @@ -187,8 +191,10 @@ def generic_archive_files(model_list, archive_name=None, result_queryset=None): for item in query.all(): for attr in model.SERIALIZATION_FILES: media = getattr(item, attr) - result.append((media.path, media.name)) - + try: + result.append((media.path, media.name)) + except ValueError: + pass archive_created = False if not archive_name: archive_created = True @@ -199,5 +205,8 @@ def generic_archive_files(model_list, archive_name=None, result_queryset=None): mode = "w" if archive_created else "a" with ZipFile(archive_name, mode) as current_zip: for media_path, name in result: - current_zip.write(media_path, arcname=name) + try: + current_zip.write(media_path, arcname=name) + except OSError: + pass return archive_name -- cgit v1.2.3