summaryrefslogtreecommitdiff
path: root/archaeological_operations/serializers.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/serializers.py')
-rw-r--r--archaeological_operations/serializers.py27
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