Skip to content
Snippets Groups Projects
Commit f6bfb5a5 authored by Erwan Rouchet's avatar Erwan Rouchet
Browse files

Merge branch 'add-date-to-act-search-results' into 'master'

Dates in search results

See merge request !283
parents 7d752b9c b76e7dfe
No related branches found
No related tags found
1 merge request!283Dates in search results
......@@ -18,7 +18,7 @@ class PageSearch(SearchAPIView):
"""
serializer_class = PageSearchResultSerializer
template_path = 'elastic/search_nested.json'
es_source = False
es_source = ['date_range']
es_sort = ["volumes", "_score", ]
es_index = settings.ES_INDEX_PAGES
es_type = Page.INDEX_TYPE
......@@ -34,7 +34,7 @@ class ActSearch(SearchAPIView):
"""
serializer_class = ActSearchResultSerializer
template_path = 'elastic/search_nested.json'
es_source = False
es_source = ['date_range']
es_sort = ["volumes", "_score", ]
es_index = settings.ES_INDEX_ACTS
es_type = Act.INDEX_TYPE
......
......@@ -79,6 +79,12 @@ def search_nested_post(model, data):
] for result in results
}
elts_date_range = {
uuid.UUID(result['_id']): result['_source']['date_range'][0]
if result['_source']['date_range'] else {}
for result in results
}
elts = list(model.objects.filter(id__in=elt_ids).prefetch_related('corpus'))
# Preserve the ordering given by ElasticSearch
ordered_elts = list(filter(None, map(lambda eid: next((e for e in elts if e.id == eid), None), elt_ids)))
......@@ -89,5 +95,8 @@ def search_nested_post(model, data):
elt.transcriptions_results = list(filter(None, [transcriptions.get(tid) for tid in elts_tr_ids[elt.id]]))
elt.total_transcriptions = tr_totals[elt.id]
elt.parent_paths = all_paths.get(elt.id, [])
date_range = elts_date_range.get(elt.id, {})
elt.date_from = date_range.get('gte')
elt.date_to = date_range['lt'].partition('||')[0] if 'lt' in date_range else None
return ordered_elts
......@@ -55,6 +55,8 @@ class PageSearchResultSerializer(serializers.ModelSerializer):
),
)
corpus = CorpusLightSerializer()
date_from = serializers.CharField()
date_to = serializers.CharField()
class Meta:
model = Page
......@@ -65,6 +67,8 @@ class PageSearchResultSerializer(serializers.ModelSerializer):
'total_transcriptions',
'parent_paths',
'corpus',
'date_from',
'date_to',
)
......@@ -80,6 +84,8 @@ class ActSearchResultSerializer(serializers.ModelSerializer):
),
)
corpus = CorpusLightSerializer()
date_from = serializers.CharField()
date_to = serializers.CharField()
class Meta:
model = Act
......@@ -91,4 +97,6 @@ class ActSearchResultSerializer(serializers.ModelSerializer):
'total_transcriptions',
'parent_paths',
'corpus',
'date_from',
'date_to',
)
......@@ -64,6 +64,8 @@ class TestSearchAPI(FixtureAPITestCase):
"_score": score,
"_type": doctype,
"_id": str(elt.id.hex),
# TODO test date ranges in a query
'_source': {'date_range': []},
"_index": index,
"inner_hits": {
"transcriptions": {
......@@ -112,7 +114,7 @@ class TestSearchAPI(FixtureAPITestCase):
self.assertEqual(kwargs['doc_type'], Page.INDEX_TYPE)
self.assertCountEqual(kwargs['body'].keys(), ['_source', 'from', 'size', 'query', 'sort', 'aggs'])
self.assertEqual(kwargs['body']['_source'], False)
self.assertListEqual(kwargs['body']['_source'], ['date_range'])
self.assertEqual(kwargs['body']['from'], 0)
self.assertEqual(kwargs['body']['size'], 1)
......@@ -175,7 +177,7 @@ class TestSearchAPI(FixtureAPITestCase):
self.assertEqual(kwargs['doc_type'], Act.INDEX_TYPE)
self.assertCountEqual(kwargs['body'].keys(), ['_source', 'from', 'size', 'query', 'sort', 'aggs'])
self.assertEqual(kwargs['body']['_source'], False)
self.assertListEqual(kwargs['body']['_source'], ['date_range'])
self.assertEqual(kwargs['body']['from'], 0)
self.assertEqual(kwargs['body']['size'], 1)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment