summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/serializers.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-03-19 11:23:36 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-03-19 11:23:36 +0100
commit6790c38e3f0d2a9e95f7d33892971863a224bf76 (patch)
treecc628849cc6a15d19d68f8d0f0d953b1e2e833c0 /archaeological_warehouse/serializers.py
parentf416ff91109b3a0d06ea84fdcff1e133ea8ca5ae (diff)
downloadIshtar-6790c38e3f0d2a9e95f7d33892971863a224bf76.tar.bz2
Ishtar-6790c38e3f0d2a9e95f7d33892971863a224bf76.zip
Format - black: warehouse
Diffstat (limited to 'archaeological_warehouse/serializers.py')
-rw-r--r--archaeological_warehouse/serializers.py134
1 files changed, 79 insertions, 55 deletions
diff --git a/archaeological_warehouse/serializers.py b/archaeological_warehouse/serializers.py
index b0cf4d96f..19ae8ba99 100644
--- a/archaeological_warehouse/serializers.py
+++ b/archaeological_warehouse/serializers.py
@@ -1,13 +1,13 @@
from django.db.models import Q
-from ishtar_common.serializers_utils import generic_get_results, \
- archive_serialization
+from ishtar_common.serializers_utils import generic_get_results, archive_serialization
from archaeological_warehouse import models
WAREHOUSE_MODEL_LIST = [
- models.Warehouse, models.Container,
+ models.Warehouse,
+ models.Container,
models.WarehouseDivisionLink,
- models.ContainerLocalisation
+ models.ContainerLocalisation,
]
# TODO: associated documents
@@ -21,57 +21,76 @@ def generate_warehouse_queryset(base_query_key, ids):
base_key = "{}__{}".format(find_key, base_query_key)
q = Q(**{base_key: ids})
container_ids.update(
- list(models.Container.objects.filter(
- q).values_list("id", flat=True)))
- q_loca = Q(
- **{"container__{}__{}".format(find_key, base_query_key): ids})
+ list(models.Container.objects.filter(q).values_list("id", flat=True))
+ )
+ q_loca = Q(**{"container__{}__{}".format(find_key, base_query_key): ids})
container_loca_ids.update(
- list(models.ContainerLocalisation.objects.filter(
- q_loca).values_list("id", flat=True)))
+ list(
+ models.ContainerLocalisation.objects.filter(q_loca).values_list(
+ "id", flat=True
+ )
+ )
+ )
for container_key in ("containers", "owned_containers"):
- q = Q(**
- {"{}__{}__{}".format(container_key, find_key,
- base_query_key): ids})
- q_div = Q(**
- {"warehouse__{}__{}__{}".format(
- container_key, find_key, base_query_key): ids})
+ q = Q(**{"{}__{}__{}".format(container_key, find_key, base_query_key): ids})
+ q_div = Q(
+ **{
+ "warehouse__{}__{}__{}".format(
+ container_key, find_key, base_query_key
+ ): ids
+ }
+ )
warehouse_ids.update(
- list(models.Warehouse.objects.filter(q).values_list(
- "id", flat=True)))
+ list(models.Warehouse.objects.filter(q).values_list("id", flat=True))
+ )
warehouse_div_ids.update(
- list(models.WarehouseDivisionLink.objects.filter(
- q_div).values_list("id", flat=True)))
+ list(
+ models.WarehouseDivisionLink.objects.filter(q_div).values_list(
+ "id", flat=True
+ )
+ )
+ )
result_queryset = {
- models.Warehouse.__name__:
- models.Warehouse.objects.filter(id__in=warehouse_ids),
- models.Container.__name__:
- models.Container.objects.filter(id__in=container_ids),
- models.WarehouseDivisionLink.__name__:
- models.WarehouseDivisionLink.objects.filter(
- id__in=warehouse_div_ids),
- models.ContainerLocalisation.__name__:
- models.ContainerLocalisation.objects.filter(
- id__in=container_loca_ids)
+ models.Warehouse.__name__: models.Warehouse.objects.filter(
+ id__in=warehouse_ids
+ ),
+ models.Container.__name__: models.Container.objects.filter(
+ id__in=container_ids
+ ),
+ models.WarehouseDivisionLink.__name__: models.WarehouseDivisionLink.objects.filter(
+ id__in=warehouse_div_ids
+ ),
+ models.ContainerLocalisation.__name__: models.ContainerLocalisation.objects.filter(
+ id__in=container_loca_ids
+ ),
}
return result_queryset
-def warehouse_serialization(archive=False, return_empty_types=False,
- archive_name=None, operation_queryset=None,
- site_queryset=None, cr_queryset=None,
- find_queryset=None, warehouse_queryset=None,
- get_queryset=False, no_geo=True,
- put_locks=False, lock_user=None):
+def warehouse_serialization(
+ archive=False,
+ return_empty_types=False,
+ archive_name=None,
+ operation_queryset=None,
+ site_queryset=None,
+ cr_queryset=None,
+ find_queryset=None,
+ warehouse_queryset=None,
+ get_queryset=False,
+ no_geo=True,
+ put_locks=False,
+ lock_user=None,
+):
result_queryset = {}
if operation_queryset:
operation_ids = operation_queryset.values_list("id", flat=True)
base_query_key = "base_finds__context_record__operation_id__in"
- result_queryset = generate_warehouse_queryset(base_query_key,
- operation_ids)
+ result_queryset = generate_warehouse_queryset(base_query_key, operation_ids)
elif site_queryset:
site_ids = site_queryset.values_list("id", flat=True)
- base_query_key = "base_finds__context_record__"\
- "operation__archaeological_sites__id__in"
+ base_query_key = (
+ "base_finds__context_record__" "operation__archaeological_sites__id__in"
+ )
result_queryset = generate_warehouse_queryset(base_query_key, site_ids)
elif cr_queryset:
cr_ids = cr_queryset.values_list("id", flat=True)
@@ -85,22 +104,24 @@ def warehouse_serialization(archive=False, return_empty_types=False,
warehouse_ids = warehouse_queryset.values_list("id", flat=True)
result_queryset = {
models.Warehouse.__name__: warehouse_queryset,
- models.Container.__name__:
- models.Container.objects.filter(
- Q(location__id__in=warehouse_ids) |
- Q(responsible__id__in=warehouse_ids)
- ),
- models.WarehouseDivisionLink.__name__:
- models.WarehouseDivisionLink.objects.filter(
- warehouse_id__in=warehouse_ids),
- models.ContainerLocalisation.__name__:
- models.ContainerLocalisation.objects.filter(
- division__warehouse_id__in=warehouse_ids)
+ models.Container.__name__: models.Container.objects.filter(
+ Q(location__id__in=warehouse_ids) | Q(responsible__id__in=warehouse_ids)
+ ),
+ models.WarehouseDivisionLink.__name__: models.WarehouseDivisionLink.objects.filter(
+ warehouse_id__in=warehouse_ids
+ ),
+ models.ContainerLocalisation.__name__: models.ContainerLocalisation.objects.filter(
+ division__warehouse_id__in=warehouse_ids
+ ),
}
if get_queryset:
return result_queryset
- result = generic_get_results(WAREHOUSE_MODEL_LIST, "warehouse",
- result_queryset=result_queryset, no_geo=no_geo)
+ result = generic_get_results(
+ WAREHOUSE_MODEL_LIST,
+ "warehouse",
+ result_queryset=result_queryset,
+ no_geo=no_geo,
+ )
if put_locks:
for model in WAREHOUSE_MODEL_LIST:
if not hasattr(model, "locked"):
@@ -111,7 +132,10 @@ def warehouse_serialization(archive=False, return_empty_types=False,
q.update(locked=True, lock_user=lock_user)
full_archive = archive_serialization(
- result, archive_dir="warehouse", archive=archive,
- return_empty_types=return_empty_types, archive_name=archive_name,
+ result,
+ archive_dir="warehouse",
+ archive=archive,
+ return_empty_types=return_empty_types,
+ archive_name=archive_name,
)
return full_archive