diff --git a/arkindex/documents/api/elements.py b/arkindex/documents/api/elements.py index 72feeed841656d5d90c70c625419c1a6091994e0..8175bd79bcbb79e29a7dc93fb6a133958d267f16 100644 --- a/arkindex/documents/api/elements.py +++ b/arkindex/documents/api/elements.py @@ -31,6 +31,8 @@ class ElementsList(CorpusACLMixin, ListAPIView): filters['corpus'] = self.get_corpus(self.request.query_params['corpus']) else: filters['corpus__in'] = Corpus.objects.readable(self.request.user) + if 'name' in self.request.query_params: + filters['name__icontains'] = self.request.query_params['name'] return Element.objects.filter(**filters).prefetch_related('corpus').order_by('corpus', 'type', 'name') diff --git a/arkindex/documents/tests/test_elements_api.py b/arkindex/documents/tests/test_elements_api.py index 482c3d7509768441b667cd01191fccf220185d9c..c62956e61c35b28f95050887b97449d1f1155dc6 100644 --- a/arkindex/documents/tests/test_elements_api.py +++ b/arkindex/documents/tests/test_elements_api.py @@ -60,3 +60,12 @@ class TestElementsAPI(FixtureAPITestCase): url += '?type=potato' response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_list_elements_filter_name(self): + nameSelected = 'ol' + response = self.client.get(reverse('api:elements'), params={'name': nameSelected}) + self.assertEqual(response.status_code, status.HTTP_200_OK) + data = response.json() + results = data['results'] + for result in results: + self.assertIn(nameSelected, result['name'])