Skip to content
Snippets Groups Projects
Commit 51f6b7e1 authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'create-process-ignore-empty' into 'master'

Ignore empty elements list in CreateElementsWorkflow

Closes #986

See merge request !1655
parents 6c249dd8 3d045fe1
No related branches found
No related tags found
1 merge request!1655Ignore empty elements list in CreateElementsWorkflow
......@@ -431,7 +431,7 @@ class CorpusWorkflow(SelectionMixin, CorpusACLMixin, CreateAPIView):
use_cache=use_cache,
)
# Ensure process elements do exists
# Ensure process elements do exist
if selection:
elements = self.get_selection(corpus.id)
if not elements.exists():
......@@ -439,10 +439,6 @@ class CorpusWorkflow(SelectionMixin, CorpusACLMixin, CreateAPIView):
'__all__': ['No element match those filters.']
})
process.elements.set(elements)
elif not process.list_elements().exists():
raise ValidationError({
'__all__': ['No element match those filters.']
})
return Response(
status=status.HTTP_201_CREATED,
......
......@@ -267,8 +267,11 @@ class TestWorkflows(FixtureAPITestCase):
self.assertEqual(dataimport.element_type.slug, 'volume')
def test_create_element_workflow_empty_queryset(self):
"""
An empty QuerySet is ignored: the user can change the element filtering later,
and running a process on no elements at all is harmless.
"""
self.client.force_login(self.user)
process_count = DataImport.objects.count()
response = self.client.post(
reverse('api:corpus-workflow'),
{
......@@ -278,15 +281,13 @@ class TestWorkflows(FixtureAPITestCase):
},
format='json'
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
data = response.json()
self.assertIn('__all__', data)
self.assertListEqual(
data['__all__'],
['No element match those filters.']
)
# Ensure the process creation is atomic when elements count test fail
self.assertEqual(DataImport.objects.count(), process_count)
dataimport = DataImport.objects.get(id=data['id'])
self.assertEqual(dataimport.corpus, self.corpus)
self.assertEqual(dataimport.element_type.slug, 'volume')
self.assertEqual(dataimport.name_contains, 'ahahah')
self.assertFalse(dataimport.list_elements().exists())
def test_create_element_workflow_empty_selection(self):
self.client.force_login(self.user)
......
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