summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_context_records/serializers.py16
-rw-r--r--archaeological_finds/serializers.py10
-rw-r--r--archaeological_finds/tests.py49
-rw-r--r--archaeological_operations/serializers.py20
4 files changed, 85 insertions, 10 deletions
diff --git a/archaeological_context_records/serializers.py b/archaeological_context_records/serializers.py
index 70e93f10f..7bb9b6724 100644
--- a/archaeological_context_records/serializers.py
+++ b/archaeological_context_records/serializers.py
@@ -10,8 +10,8 @@ CR_MODEL_LIST = [
def cr_serialization(archive=False, return_empty_types=False,
- archive_name=None, operation_queryset=None,
- site_queryset=None, cr_queryset=None):
+ 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)
@@ -47,6 +47,18 @@ def cr_serialization(archive=False, return_empty_types=False,
right_record_id__in=cr_ids,
)
}
+ elif find_queryset:
+ find_ids = find_queryset.values_list("id", flat=True)
+ result_queryset = {
+ models.ContextRecord.__name__: models.ContextRecord.objects.filter(
+ base_finds__find__id__in=find_ids,
+ ),
+ models.RecordRelations.__name__:
+ models.RecordRelations.objects.filter(
+ left_record__base_finds__find__id__in=find_ids,
+ right_record__base_finds__find__id__in=find_ids,
+ )
+ }
result = generic_get_results(CR_MODEL_LIST, "context_records",
result_queryset=result_queryset)
diff --git a/archaeological_finds/serializers.py b/archaeological_finds/serializers.py
index 5fc8d2224..56d113636 100644
--- a/archaeological_finds/serializers.py
+++ b/archaeological_finds/serializers.py
@@ -11,7 +11,8 @@ FIND_MODEL_LIST = [
def find_serialization(archive=False, return_empty_types=False,
archive_name=None, operation_queryset=None,
- site_queryset=None, cr_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)
@@ -46,6 +47,13 @@ def find_serialization(archive=False, return_empty_types=False,
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(FIND_MODEL_LIST, "finds",
result_queryset=result_queryset)
full_archive = archive_serialization(
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 63090ce04..2d6b85b1a 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -54,6 +54,8 @@ from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \
from archaeological_operations.tests import ImportTest, create_operation
from archaeological_context_records.tests import ContextRecordInit
+from archaeological_operations.serializers import operation_serialization
+from archaeological_context_records.serializers import cr_serialization
from archaeological_finds import serializers
@@ -173,8 +175,22 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase):
)
self.assertEqual(len(bfind_json), 1)
- """
- def test_ope_serialization_with_cr_filter(self):
+ result_queryset = models.Find.objects.filter(
+ uuid=self.finds[0].uuid)
+ res = self.generic_serialization_test(
+ serializers.find_serialization, no_test=True,
+ kwargs={"find_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_ope_serialization_with_find_filter(self):
res = self.generic_serialization_test(
operation_serialization, no_test=True,
)
@@ -183,17 +199,38 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase):
)
self.assertEqual(len(ope_json), 2)
- result_queryset = models.ContextRecord.objects.filter(
- uuid=self.context_records[0].uuid)
+ result_queryset = models.Find.objects.filter(
+ uuid=self.finds[0].uuid)
res = self.generic_serialization_test(
operation_serialization, no_test=True,
- kwargs={"cr_queryset": result_queryset}
+ kwargs={"find_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):
+ res = self.generic_serialization_test(
+ cr_serialization, no_test=True,
+ )
+ cr_json = json.loads(
+ res[('context_records',
+ 'archaeological_context_records__ContextRecord')]
+ )
+ self.assertEqual(len(cr_json), 2)
+
+ result_queryset = models.Find.objects.filter(
+ uuid=self.finds[0].uuid)
+ res = self.generic_serialization_test(
+ cr_serialization, no_test=True,
+ kwargs={"find_queryset": result_queryset}
+ )
+ cr_json = json.loads(
+ res[('context_records',
+ 'archaeological_context_records__ContextRecord')]
+ )
+ self.assertEqual(len(cr_json), 1)
def test_restore(self):
current_number, zip_filename = self.generic_restore_test_genzip(
diff --git a/archaeological_operations/serializers.py b/archaeological_operations/serializers.py
index a480f307a..4dd6f106b 100644
--- a/archaeological_operations/serializers.py
+++ b/archaeological_operations/serializers.py
@@ -12,7 +12,8 @@ OPERATION_MODEL_LIST = [
def operation_serialization(archive=False, return_empty_types=False,
archive_name=None, operation_queryset=None,
- site_queryset=None, cr_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)
@@ -54,6 +55,23 @@ def operation_serialization(archive=False, return_empty_types=False,
right_record__context_record__id__in=cr_ids,
),
}
+ elif find_queryset:
+ find_ids = find_queryset.values_list("id", flat=True)
+ result_queryset = {
+ models.ArchaeologicalSite.__name__:
+ models.ArchaeologicalSite.objects.filter(
+ operations__context_record__base_finds__find__id__in
+ =find_ids),
+ models.Operation.__name__: models.Operation.objects.filter(
+ context_record__base_finds__find__id__in=find_ids),
+ models.RecordRelations.__name__:
+ models.RecordRelations.objects.filter(
+ left_record__context_record__base_finds__find__id__in=
+ find_ids,
+ right_record__context_record__base_finds__find__id__in=
+ find_ids,
+ ),
+ }
result = generic_get_results(OPERATION_MODEL_LIST, "operations",
result_queryset=result_queryset)