diff options
Diffstat (limited to 'archaeological_operations/serializers.py')
| -rw-r--r-- | archaeological_operations/serializers.py | 27 | 
1 files changed, 24 insertions, 3 deletions
| diff --git a/archaeological_operations/serializers.py b/archaeological_operations/serializers.py index 7d4d9033d..22f0aedc7 100644 --- a/archaeological_operations/serializers.py +++ b/archaeological_operations/serializers.py @@ -9,9 +9,30 @@ OPERATION_MODEL_LIST = [  def operation_serialization(archive=False, return_empty_types=False, -                            archive_name=None): -    result = generic_get_results(OPERATION_MODEL_LIST, "operations") +                            archive_name=None, operation_queryset=None, +                            site_queryset=None): +    result_queryset = {} +    if operation_queryset: +        result_queryset = { +            models.Operation.__name__: operation_queryset, +            models.ArchaeologicalSite.__name__: +                models.ArchaeologicalSite.objects.filter( +                    operations__id__in=operation_queryset.values_list( +                        "id", flat=True) +                    ) +        } +    elif site_queryset: +        result_queryset = { +            models.ArchaeologicalSite.__name__: site_queryset, +            models.Operation.__name__: models.Operation.objects.filter( +                archaeological_sites__id__in=site_queryset.values_list( +                    "id", flat=True)) +        } + +    result = generic_get_results(OPERATION_MODEL_LIST, "operations", +                                 result_queryset=result_queryset)      full_archive = archive_serialization(          result, archive_dir="operations", archive=archive, -        return_empty_types=return_empty_types, archive_name=archive_name) +        return_empty_types=return_empty_types, archive_name=archive_name, +    )      return full_archive | 
