diff --git a/arkindex/dataimport/api.py b/arkindex/dataimport/api.py index 983fc64fc0d3737313caae6df234ba2d2ae561c6..1738c5b98fb6f395318114b580317de9cdbdedc0 100644 --- a/arkindex/dataimport/api.py +++ b/arkindex/dataimport/api.py @@ -189,6 +189,9 @@ class DataImportsList(ProcessACLMixin, ListAPIView): if 'id' in self.request.query_params: filters &= Q(id__startswith=self.request.query_params['id']) + if 'name' in self.request.query_params: + filters &= Q(name__icontains=self.request.query_params['name']) + qs = self.readable_processes \ .filter(filters) \ .prefetch_related('workflow__tasks') diff --git a/arkindex/dataimport/tests/test_imports.py b/arkindex/dataimport/tests/test_imports.py index 1c68e564fa2ea6902d1eda75193f6ff9c8dfd8c8..bc45e9793e8d1ae818801718fd133c4c71ce9ed3 100644 --- a/arkindex/dataimport/tests/test_imports.py +++ b/arkindex/dataimport/tests/test_imports.py @@ -259,6 +259,31 @@ class TestImports(FixtureAPITestCase): self.assertEqual(len(data['results']), 1) self.assertEqual(data['results'][0]['id'], str(dataimport2.id)) + def test_list_filter_name(self): + self.client.force_login(self.user) + + dataimport_id_1 = str(uuid.uuid4()) + dataimport1 = self.corpus.imports.create( + id=dataimport_id_1, + creator=self.user, + mode=DataImportMode.Workers, + name='Number One' + ) + + dataimport_id_2 = str(uuid.uuid4()) + self.corpus.imports.create( + id=dataimport_id_2, + creator=self.user, + mode=DataImportMode.Workers, + name='Numero Duo' + ) + + response = self.client.get(reverse('api:import-list'), {'name': 'Numb', 'with_workflow': False}) + self.assertEqual(response.status_code, status.HTTP_200_OK) + data = response.json() + self.assertEqual(len(data['results']), 1) + self.assertEqual(data['results'][0]['id'], str(dataimport1.id)) + def test_list_no_tasks(self): """ Ensure the DataImport reports an Unscheduled state when there are no tasks in its workflow