summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/serializers.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-06 11:25:23 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-06 13:14:50 +0200
commit8a72cfe66f5b2bcbee5e21053a120779523bff09 (patch)
treec90abf2c8ef326981b60fcde7691afbb1f6d1b8d /archaeological_warehouse/serializers.py
parent71895597de8296a2e946912f12562a8486e6946f (diff)
downloadIshtar-8a72cfe66f5b2bcbee5e21053a120779523bff09.tar.bz2
Ishtar-8a72cfe66f5b2bcbee5e21053a120779523bff09.zip
Serializers: warehouse module
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