Skip to content
Snippets Groups Projects
Commit b76e7dfe authored by Valentin Rigal's avatar Valentin Rigal Committed by Erwan Rouchet
Browse files

Dates in search results

parent 7d752b9c
No related branches found
No related tags found
No related merge requests found
......@@ -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