summaryrefslogtreecommitdiff
path: root/ishtar_common/serializers.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.py
parent647546deffb5152cebbaed3b0bf5bed309d59fc5 (diff)
downloadIshtar-51f31dd7dfd62c2d9de75e83ccf1727190514157.tar.bz2
Ishtar-51f31dd7dfd62c2d9de75e83ccf1727190514157.zip
Serialization: manage export action in admin - optimizations
Diffstat (limited to 'ishtar_common/serializers.py')
-rw-r--r--ishtar_common/serializers.py55
1 files changed, 37 insertions, 18 deletions
diff --git a/ishtar_common/serializers.py b/ishtar_common/serializers.py
index 1b18ccab5..e59c1aa3c 100644
--- a/ishtar_common/serializers.py
+++ b/ishtar_common/serializers.py
@@ -43,11 +43,11 @@ def get_type_models():
def type_serialization(archive=False, return_empty_types=False,
- archive_name=None):
+ archive_name=None, info=None):
result = generic_get_results(get_type_models(), "types")
return archive_serialization(result, archive_dir="types", archive=archive,
return_empty_types=return_empty_types,
- archive_name=archive_name)
+ archive_name=archive_name, info=info)
CONF_MODEL_LIST = [
@@ -147,7 +147,7 @@ def document_serialization(archive=False, return_empty_types=False,
queries.update(cr_serialization(**get_queryset_attr))
queries.update(find_serialization(**get_queryset_attr))
queries.update(warehouse_serialization(**get_queryset_attr))
- q = None
+ document_ids = set()
for model, attr in (
("Operation", "operations"),
("ArchaeologicalSite", "sites"),
@@ -155,13 +155,13 @@ def document_serialization(archive=False, return_empty_types=False,
("Find", "finds"),
("Warehouse", "warehouses"),
("Container", "containers")):
- values = queries[model].values_list("id", flat=True)
- base_q = Q(**{attr + "__id__in": values})
- if not q:
- q = base_q
- else:
- q |= base_q
- result_queryset["Document"] = models.Document.objects.filter(q)
+ values = list(queries[model].values_list("id", flat=True))
+ document_ids.update(
+ models.Document.objects.filter(
+ **{attr + "__id__in": values}).values_list(
+ "id", flat=True))
+ result_queryset["Document"] = models.Document.objects.filter(
+ id__in=document_ids)
result = generic_get_results([models.Document], "documents",
result_queryset=result_queryset)
@@ -213,33 +213,52 @@ def document_serialization(archive=False, return_empty_types=False,
def full_serialization(operation_queryset=None, site_queryset=None,
cr_queryset=None, find_queryset=None,
- warehouse_queryset=None, archive=True):
- archive_name = type_serialization(archive=archive)
+ warehouse_queryset=None, archive=True, no_geo=True,
+ info=None):
+ # print("type")
+ archive_name = type_serialization(archive=archive, info=info)
+ # print("conf")
conf_serialization(archive=archive, archive_name=archive_name)
+ # print("importer")
importer_serialization(archive=archive, archive_name=archive_name)
- geo_serialization(archive=archive, archive_name=archive_name)
+ # print("geo")
+ geo_serialization(archive=archive, archive_name=archive_name, no_geo=no_geo)
+ # print("directory")
directory_serialization(archive=archive, archive_name=archive_name)
- document_serialization(archive=archive, archive_name=archive_name)
- operation_serialization(
+ # print("document")
+ document_serialization(
archive=archive,
archive_name=archive_name, operation_queryset=operation_queryset,
site_queryset=site_queryset, cr_queryset=cr_queryset,
find_queryset=find_queryset, warehouse_queryset=warehouse_queryset)
+ # print("operation")
+ operation_serialization(
+ archive=archive,
+ archive_name=archive_name, operation_queryset=operation_queryset,
+ site_queryset=site_queryset, cr_queryset=cr_queryset,
+ find_queryset=find_queryset, warehouse_queryset=warehouse_queryset,
+ no_geo=no_geo)
+ # print("cr")
cr_serialization(
archive=archive,
archive_name=archive_name, operation_queryset=operation_queryset,
site_queryset=site_queryset, cr_queryset=cr_queryset,
- find_queryset=find_queryset, warehouse_queryset=warehouse_queryset)
+ find_queryset=find_queryset, warehouse_queryset=warehouse_queryset,
+ no_geo=no_geo)
+ # print("find")
find_serialization(
archive=archive,
archive_name=archive_name, operation_queryset=operation_queryset,
site_queryset=site_queryset, cr_queryset=cr_queryset,
- find_queryset=find_queryset, warehouse_queryset=warehouse_queryset)
+ find_queryset=find_queryset, warehouse_queryset=warehouse_queryset,
+ no_geo=no_geo)
+ # print("warehouse")
warehouse_serialization(
archive=archive,
archive_name=archive_name, operation_queryset=operation_queryset,
site_queryset=site_queryset, cr_queryset=cr_queryset,
- find_queryset=find_queryset, warehouse_queryset=warehouse_queryset)
+ find_queryset=find_queryset, warehouse_queryset=warehouse_queryset,
+ no_geo=no_geo)
return archive_name