summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/serializers.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_warehouse/serializers.py')
-rw-r--r--archaeological_warehouse/serializers.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/archaeological_warehouse/serializers.py b/archaeological_warehouse/serializers.py
new file mode 100644
index 000000000..888c7d33f
--- /dev/null
+++ b/archaeological_warehouse/serializers.py
@@ -0,0 +1,67 @@
+from ishtar_common.serializers import generic_get_results, archive_serialization
+from archaeological_warehouse import models
+
+
+WAREHOUSE_MODEL_LIST = [
+ models.Warehouse, models.Container,
+ models.WarehouseDivisionLink,
+ models.ContainerLocalisation
+]
+
+# TODO: associated documents
+
+
+def warehouse_serialization(archive=False, return_empty_types=False,
+ archive_name=None, operation_queryset=None,
+ site_queryset=None, cr_queryset=None,
+ find_queryset=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),
+ }
+ elif site_queryset:
+ sites = site_queryset.values_list("id", flat=True)
+ f_q = {
+ "base_finds__context_record__operation__archaeological_site_id__in": sites
+ }
+ result_queryset = {
+ models.BaseFind.__name__:
+ models.BaseFind.objects.filter(
+ context_record__operation__archaeological_site_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),
+ }
+ 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),
+ models.Find.__name__: find_queryset,
+ }
+ """
+ result = generic_get_results(WAREHOUSE_MODEL_LIST, "warehouse",
+ result_queryset=result_queryset)
+ full_archive = archive_serialization(
+ result, archive_dir="warehouse", archive=archive,
+ return_empty_types=return_empty_types, archive_name=archive_name,
+ )
+ return full_archive