diff options
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 |
commit | 344c17b51e13a273e8b6e80d67cfa112d1ea6926 (patch) | |
tree | 00c30cef25b67be3bf7bd788af800806259b5bc1 /ishtar_common/serializers.py | |
parent | 76b5d6bf028389be2e9ac421478b868c4f5e7899 (diff) | |
download | Ishtar-344c17b51e13a273e8b6e80d67cfa112d1ea6926.tar.bz2 Ishtar-344c17b51e13a273e8b6e80d67cfa112d1ea6926.zip |
Serialization: manage export action in admin - optimizations
Diffstat (limited to 'ishtar_common/serializers.py')
-rw-r--r-- | ishtar_common/serializers.py | 55 |
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 |