summaryrefslogtreecommitdiff
path: root/ishtar_common/serializers_utils.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-09 00:05:51 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-09 00:05:51 +0200
commit51f31dd7dfd62c2d9de75e83ccf1727190514157 (patch)
tree00c30cef25b67be3bf7bd788af800806259b5bc1 /ishtar_common/serializers_utils.py
parent647546deffb5152cebbaed3b0bf5bed309d59fc5 (diff)
downloadIshtar-51f31dd7dfd62c2d9de75e83ccf1727190514157.tar.bz2
Ishtar-51f31dd7dfd62c2d9de75e83ccf1727190514157.zip
Serialization: manage export action in admin - optimizations
Diffstat (limited to 'ishtar_common/serializers_utils.py')
-rw-r--r--ishtar_common/serializers_utils.py23
1 files changed, 16 insertions, 7 deletions
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