diff options
| -rw-r--r-- | archaeological_context_records/serializers.py | 16 | ||||
| -rw-r--r-- | archaeological_finds/serializers.py | 10 | ||||
| -rw-r--r-- | archaeological_finds/tests.py | 49 | ||||
| -rw-r--r-- | archaeological_operations/serializers.py | 20 | 
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) | 
