diff --git a/arkindex/documents/search.py b/arkindex/documents/search.py index f10be10e4635ba9f62fa5e681b393a809400a838..5cdbcc2b97e6669bbe0ee7f23e1514d6229438ac 100644 --- a/arkindex/documents/search.py +++ b/arkindex/documents/search.py @@ -56,9 +56,13 @@ def search_acts_post(data): parents_ids=act_ids, prefetch=('zone__image__server',) ) + + all_parents = Element.objects.get_ascendings_paths(*act_ids) + for act in acts: act.transcriptions = [transcriptions[tid] for tid in acts_tr_ids[act.id]] act.surfaces = [surf.zone for surf in all_surfaces.get(act.id, [])] + act.parents = all_parents.get(act.id, []) return sorted(acts, key=lambda a: act_scores[a.id], reverse=True) diff --git a/arkindex/documents/serializers.py b/arkindex/documents/serializers.py index 11af0df8ac27d74ec8b79bb43b19f356f54a00d4..4bbe15d134062cbec879ad5412ff00a9103ae766 100644 --- a/arkindex/documents/serializers.py +++ b/arkindex/documents/serializers.py @@ -216,6 +216,12 @@ class ActSearchResultSerializer(serializers.ModelSerializer): """ transcriptions = TranscriptionSerializer(many=True) surfaces = ZoneSerializer(many=True) + parents = serializers.ListField( + child=serializers.ListField( + child=ElementLightSerializer() + ), + read_only=True, + ) viewer_url = ViewerURLField('api:act-manifest') class Meta: @@ -226,6 +232,7 @@ class ActSearchResultSerializer(serializers.ModelSerializer): 'number', 'transcriptions', 'surfaces', + 'parents', 'viewer_url', )