diff options
Diffstat (limited to 'archaeological_finds/serializers.py')
-rw-r--r-- | archaeological_finds/serializers.py | 92 |
1 files changed, 48 insertions, 44 deletions
diff --git a/archaeological_finds/serializers.py b/archaeological_finds/serializers.py index e130a0ef8..54e9108b3 100644 --- a/archaeological_finds/serializers.py +++ b/archaeological_finds/serializers.py @@ -1,13 +1,10 @@ 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_finds import models -FIND_MODEL_LIST = [ - models.BaseFind, models.Find -] +FIND_MODEL_LIST = [models.BaseFind, models.Find] # TODO: associated documents, property, findbasket, treatments @@ -17,12 +14,10 @@ def generate_warehouse_queryset(ids): for container_key in ("container", "container_ref"): for warehouse_key in ("location", "responsible"): - q_f = Q(** - {"{}__{}__id__in".format( - container_key, warehouse_key): ids}) - q_bf = Q(** - {"find__{}__{}__id__in".format( - container_key, warehouse_key): ids}) + q_f = Q(**{"{}__{}__id__in".format(container_key, warehouse_key): ids}) + q_bf = Q( + **{"find__{}__{}__id__in".format(container_key, warehouse_key): ids} + ) if not q_find: q_find = q_f q_basefind = q_bf @@ -31,30 +26,36 @@ def generate_warehouse_queryset(ids): q_basefind |= q_bf result_queryset = { - models.BaseFind.__name__: - models.BaseFind.objects.filter(q_basefind), - models.Find.__name__: - models.Find.objects.filter(q_find), + models.BaseFind.__name__: models.BaseFind.objects.filter(q_basefind), + models.Find.__name__: models.Find.objects.filter(q_find), } return result_queryset -def find_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 find_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) result_queryset = { - models.BaseFind.__name__: - models.BaseFind.objects.filter( - context_record__operation_id__in=operation_ids), - models.Find.__name__: - models.Find.objects.filter( - base_finds__context_record__operation_id__in=operation_ids), + models.BaseFind.__name__: models.BaseFind.objects.filter( + context_record__operation_id__in=operation_ids + ), + models.Find.__name__: models.Find.objects.filter( + base_finds__context_record__operation_id__in=operation_ids + ), } elif site_queryset: sites = site_queryset.values_list("id", flat=True) @@ -62,28 +63,27 @@ def find_serialization(archive=False, return_empty_types=False, "base_finds__context_record__operation__archaeological_sites__id__in": sites } result_queryset = { - models.BaseFind.__name__: - models.BaseFind.objects.filter( - context_record__operation__archaeological_sites__id__in=sites - ), - models.Find.__name__: - models.Find.objects.filter(**f_q), + models.BaseFind.__name__: models.BaseFind.objects.filter( + context_record__operation__archaeological_sites__id__in=sites + ), + models.Find.__name__: models.Find.objects.filter(**f_q), } elif cr_queryset: cr_ids = cr_queryset.values_list("id", flat=True) result_queryset = { - models.BaseFind.__name__: - models.BaseFind.objects.filter( - context_record__in=cr_ids), - models.Find.__name__: - models.Find.objects.filter( - base_finds__context_record__in=cr_ids), + models.BaseFind.__name__: models.BaseFind.objects.filter( + context_record__in=cr_ids + ), + models.Find.__name__: models.Find.objects.filter( + base_finds__context_record__in=cr_ids + ), } elif find_queryset: find_ids = find_queryset.values_list("id", flat=True) result_queryset = { models.BaseFind.__name__: models.BaseFind.objects.filter( - find__id__in=find_ids), + find__id__in=find_ids + ), models.Find.__name__: find_queryset, } elif warehouse_queryset: @@ -93,8 +93,9 @@ def find_serialization(archive=False, return_empty_types=False, if get_queryset: return result_queryset - result = generic_get_results(FIND_MODEL_LIST, "finds", - result_queryset=result_queryset, no_geo=no_geo) + result = generic_get_results( + FIND_MODEL_LIST, "finds", result_queryset=result_queryset, no_geo=no_geo + ) if put_locks: for model in FIND_MODEL_LIST: if not hasattr(model, "locked"): @@ -105,7 +106,10 @@ def find_serialization(archive=False, return_empty_types=False, q.update(locked=True, lock_user=lock_user) full_archive = archive_serialization( - result, archive_dir="operations", archive=archive, - return_empty_types=return_empty_types, archive_name=archive_name, + result, + archive_dir="operations", + archive=archive, + return_empty_types=return_empty_types, + archive_name=archive_name, ) return full_archive |