diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-06 20:22:55 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-06 20:22:55 +0200 |
commit | f7420f6003fce4663c017633407b3044e81ce587 (patch) | |
tree | 1e4e3653789d36146acc02cc5838ac54f95a2e28 /archaeological_warehouse | |
parent | 2a70fa9be2d231cab962909b56277c81426f04a9 (diff) | |
download | Ishtar-f7420f6003fce4663c017633407b3044e81ce587.tar.bz2 Ishtar-f7420f6003fce4663c017633407b3044e81ce587.zip |
Serialization: warehouse filter
Diffstat (limited to 'archaeological_warehouse')
-rw-r--r-- | archaeological_warehouse/serializers.py | 11 | ||||
-rw-r--r-- | archaeological_warehouse/tests.py | 46 |
2 files changed, 43 insertions, 14 deletions
diff --git a/archaeological_warehouse/serializers.py b/archaeological_warehouse/serializers.py index 2c44c9dcf..ed5a3f189 100644 --- a/archaeological_warehouse/serializers.py +++ b/archaeological_warehouse/serializers.py @@ -13,7 +13,7 @@ WAREHOUSE_MODEL_LIST = [ # TODO: associated documents -def generate_queryset(base_query_key, ids): +def generate_warehouse_queryset(base_query_key, ids): warehouse_division_q, warehouse_q, container_q = None, None, None container_loca_q = None for find_key in ("finds", "finds_ref"): @@ -63,20 +63,21 @@ def warehouse_serialization(archive=False, return_empty_types=False, 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_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__"\ "archaeological_site_id__in" - result_queryset = generate_queryset(base_query_key, site_ids) + result_queryset = generate_warehouse_queryset(base_query_key, site_ids) elif cr_queryset: cr_ids = cr_queryset.values_list("id", flat=True) base_query_key = "base_finds__context_record__id__in" - result_queryset = generate_queryset(base_query_key, cr_ids) + result_queryset = generate_warehouse_queryset(base_query_key, cr_ids) elif find_queryset: find_ids = find_queryset.values_list("id", flat=True) base_query_key = "id__in" - result_queryset = generate_queryset(base_query_key, find_ids) + result_queryset = generate_warehouse_queryset(base_query_key, find_ids) elif warehouse_queryset: warehouse_ids = warehouse_queryset.values_list("id", flat=True) result_queryset = { diff --git a/archaeological_warehouse/tests.py b/archaeological_warehouse/tests.py index 52f1a96fc..6d6dbddc9 100644 --- a/archaeological_warehouse/tests.py +++ b/archaeological_warehouse/tests.py @@ -32,6 +32,8 @@ from archaeological_finds.models import Find from archaeological_warehouse import models, views, forms, serializers from archaeological_operations.serializers import operation_serialization +from archaeological_context_records.serializers import cr_serialization +from archaeological_finds.serializers import find_serialization class SerializationTest(GenericSerializationTest, FindInit, TestCase): @@ -280,7 +282,6 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase): ) self.assertEqual(len(loca_json), 2) - """ def test_ope_serialization_with_warehouse_filter(self): res = self.generic_serialization_test( operation_serialization, no_test=True, @@ -290,18 +291,18 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase): ) self.assertEqual(len(ope_json), 2) - result_queryset = models.Find.objects.filter( - uuid=self.finds[0].uuid) + result_queryset = models.Warehouse.objects.filter( + id=self.warehouses[0].pk) res = self.generic_serialization_test( operation_serialization, no_test=True, - kwargs={"find_queryset": result_queryset} + kwargs={"warehouse_queryset": result_queryset} ) ope_json = json.loads( res[('operations', 'archaeological_operations__Operation')] ) self.assertEqual(len(ope_json), 1) - def test_cr_serialization_with_find_filter(self): + def test_cr_serialization_with_warehouse_filter(self): res = self.generic_serialization_test( cr_serialization, no_test=True, ) @@ -311,18 +312,45 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase): ) self.assertEqual(len(cr_json), 2) - result_queryset = models.Find.objects.filter( - uuid=self.finds[0].uuid) + result_queryset = models.Warehouse.objects.filter( + id=self.warehouses[0].pk) res = self.generic_serialization_test( cr_serialization, no_test=True, - kwargs={"find_queryset": result_queryset} + kwargs={"warehouse_queryset": result_queryset} ) cr_json = json.loads( res[('context_records', 'archaeological_context_records__ContextRecord')] ) self.assertEqual(len(cr_json), 1) - """ + + def test_find_serialization_with_warehouse_filter(self): + res = self.generic_serialization_test( + find_serialization, no_test=True, + ) + find_json = json.loads( + res[('finds', 'archaeological_finds__Find')] + ) + self.assertEqual(len(find_json), 3) + bfind_json = json.loads( + res[('finds', 'archaeological_finds__BaseFind')] + ) + self.assertEqual(len(bfind_json), 3) + + result_queryset = models.Warehouse.objects.filter( + id=self.warehouses[0].pk) + res = self.generic_serialization_test( + find_serialization, no_test=True, + kwargs={"warehouse_queryset": result_queryset} + ) + find_json = json.loads( + res[('finds', 'archaeological_finds__Find')] + ) + self.assertEqual(len(find_json), 1) + bfind_json = json.loads( + res[('finds', 'archaeological_finds__BaseFind')] + ) + self.assertEqual(len(bfind_json), 1) def test_restore(self): current_number, zip_filename = self.generic_restore_test_genzip( |