diff --git a/arkindex/process/serializers/imports.py b/arkindex/process/serializers/imports.py index 5f1abd0d6b0adaf15a574b1bc75d201a4b61d9a6..1795e95d59ce94b5d388d979c848e05b65204b2c 100644 --- a/arkindex/process/serializers/imports.py +++ b/arkindex/process/serializers/imports.py @@ -344,7 +344,11 @@ class StartProcessSerializer(serializers.Serializer): elif not any(dataset.corpus_id == self.instance.corpus.id for dataset in self.instance.datasets.all()): errors['non_field_errors'].append('At least one of the process datasets must be from the same corpus as the process.') if validated_data.get('thumbnails'): - errors['thumbnails'].append('Thumbnails generation is incompatible with dataset mode processes.') + errors['thumbnails'].append('Thumbnails generation is not supported on Dataset processes.') + if validated_data.get('worker_activity'): + errors['worker_activity'].append('Worker activities are not supported on Dataset processes.') + if validated_data.get('use_cache'): + errors['use_cache'].append('Caching is not supported on Dataset processes.') # Use process.worker_runs.all() to access the (prefetched) worker_runs to avoid new SQL queries # The related worker versions have also been prefetched diff --git a/arkindex/process/tests/test_processes.py b/arkindex/process/tests/test_processes.py index d4c8b255e668610e4e0146be4474ce24fb3c42a7..f91f608b814a8158318b6efcf0256bb5760000a6 100644 --- a/arkindex/process/tests/test_processes.py +++ b/arkindex/process/tests/test_processes.py @@ -2089,6 +2089,30 @@ class TestProcesses(FixtureAPITestCase): 'non_field_errors': ['At least one of the process datasets must be from the same corpus as the process.'] }) + def test_start_process_dataset_unsupported_parameters(self): + process2 = self.corpus.processes.create(creator=self.user, mode=ProcessMode.Dataset) + process2.datasets.set([self.dataset1, self.private_dataset]) + process2.worker_runs.create(version=self.recognizer, parents=[], configuration=None) + + self.client.force_login(self.user) + + with self.assertNumQueries(8): + response = self.client.post( + reverse('api:process-start', kwargs={'pk': str(process2.id)}), + { + 'thumbnails': True, + 'use_cache': True, + 'worker_activity': True, + } + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + self.assertDictEqual(response.json(), { + 'thumbnails': ['Thumbnails generation is not supported on Dataset processes.'], + 'use_cache': ['Caching is not supported on Dataset processes.'], + 'worker_activity': ['Worker activities are not supported on Dataset processes.'], + }) + def test_start_process_dataset(self): process2 = self.corpus.processes.create(creator=self.user, mode=ProcessMode.Dataset) process2.datasets.set([self.dataset1, self.private_dataset]) @@ -2266,23 +2290,6 @@ class TestProcesses(FixtureAPITestCase): f'reco_{str(self.recognizer.id)[:6]}_3' ]) - def test_start_process_dataset_no_thumbnails(self): - """ - It is not possible to pass thumbnails when starting a dataset process - """ - process = self.corpus.processes.create(creator=self.user, mode=ProcessMode.Dataset) - process.datasets.set([self.dataset1, self.dataset2]) - # Add a worker run to this process - process.worker_runs.create(version=self.recognizer, parents=[], configuration=None) - - self.client.force_login(self.user) - response = self.client.post( - reverse('api:process-start', kwargs={'pk': str(process.id)}), - {'thumbnails': True} - ) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertDictEqual(response.json(), {'thumbnails': ['Thumbnails generation is incompatible with dataset mode processes.']}) - @patch('arkindex.process.models.Process.worker_runs') @patch('arkindex.project.triggers.process_tasks.initialize_activity.delay') def test_start_process_options_requires_workers(self, activities_delay_mock, worker_runs_mock):