diff --git a/arkindex/dataimport/api.py b/arkindex/dataimport/api.py index e25952b77f7de9530f2056e01e9e9ba7563f7855..022c7585ebd2c0b93cbe392247ab848bd9cae14e 100644 --- a/arkindex/dataimport/api.py +++ b/arkindex/dataimport/api.py @@ -1326,7 +1326,8 @@ class UpdateWorkerActivity(GenericAPIView): ) class CorpusWorkersActivity(CorpusACLMixin, ListAPIView): """ - Retrieve corpus wise statistics about the activity of all its worker processes + Retrieve corpus wise statistics about the activity of all its worker processes.\n + Requires a **guest** access. """ permission_classes = (IsVerified, ) serializer_class = WorkerStatisticsSerializer @@ -1334,7 +1335,7 @@ class CorpusWorkersActivity(CorpusACLMixin, ListAPIView): queryset = WorkerActivity.objects.none() def list(self, request, *args, **kwargs): - corpus = self.get_corpus(self.kwargs['corpus'], role=Role.Admin) + corpus = self.get_corpus(self.kwargs['corpus'], role=Role.Guest) # Retrieve the distribution of activities on this corpus grouped by worker version stats = WorkerActivity.objects \ @@ -1361,7 +1362,8 @@ class CorpusWorkersActivity(CorpusACLMixin, ListAPIView): ) class ProcessWorkersActivity(ProcessACLMixin, ListAPIView): """ - Retrieve process statistics about the activity of its workers + Retrieve process statistics about the activity of its workers.\n + Requires a **guest** access. """ permission_classes = (IsVerified, ) serializer_class = WorkerStatisticsSerializer diff --git a/arkindex/dataimport/tests/test_workeractivity_stats.py b/arkindex/dataimport/tests/test_workeractivity_stats.py index f65bfe4a3df2cf8939622f2dee07a0e79df17447..6e3d8b226633b0ba1e9c2127b98c8dff2b68bc10 100644 --- a/arkindex/dataimport/tests/test_workeractivity_stats.py +++ b/arkindex/dataimport/tests/test_workeractivity_stats.py @@ -57,7 +57,7 @@ class TestWorkersActivity(FixtureAPITestCase): ] ] - def test_version_stats_requires_login(self): + def test_workeractivities_stats_requires_login(self): with self.assertNumQueries(0): response = self.client.get( reverse('api:corpus-workers-activity', kwargs={'corpus': str(self.corpus.id)}) @@ -65,27 +65,16 @@ class TestWorkersActivity(FixtureAPITestCase): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertDictEqual(response.json(), {'detail': 'Authentication credentials were not provided.'}) - def test_version_private_corpus(self): + def test_workeractivities_private_corpus(self): self.client.force_login(self.user) with self.assertNumQueries(6): response = self.client.get( reverse('api:corpus-workers-activity', kwargs={'corpus': str(self.private_corpus.id)}) ) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - self.assertDictEqual(response.json(), {'detail': 'You do not have admin access to this corpus.'}) + self.assertDictEqual(response.json(), {'detail': 'You do not have guest access to this corpus.'}) - def test_version_stats_requires_admin(self): - user = User.objects.create_user('user42@test.test', 'abcd') - self.corpus.memberships.create(user=user, level=Role.Contributor.value) - self.client.force_login(user) - with self.assertNumQueries(5): - response = self.client.get( - reverse('api:corpus-workers-activity', kwargs={'corpus': str(self.corpus.id)}) - ) - self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - self.assertDictEqual(response.json(), {'detail': 'You do not have admin access to this corpus.'}) - - def test_versions_unexisting_corpus(self): + def test_workeractivities_unexisting_corpus(self): self.client.force_login(self.user) with self.assertNumQueries(3): response = self.client.get( @@ -93,12 +82,13 @@ class TestWorkersActivity(FixtureAPITestCase): ) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - def test_versions_empty(self): + def test_workeractivities_empty(self): """ - Handle a version that has absolutely no results on the corpus + Handle a corpus that has absolutely no activity + A user with a guest access can retrieve statistics """ user = User.objects.create_user('user42@test.test', 'abcd') - self.private_corpus.memberships.create(user=user, level=Role.Admin.value) + self.private_corpus.memberships.create(user=user, level=Role.Guest.value) self.client.force_login(user) with self.assertNumQueries(6): response = self.client.get( @@ -109,7 +99,7 @@ class TestWorkersActivity(FixtureAPITestCase): def test_workers_activity_distributed_states(self): self.client.force_login(self.user) - with self.assertNumQueries(7): + with self.assertNumQueries(4): response = self.client.get( reverse('api:corpus-workers-activity', kwargs={'corpus': str(self.corpus.id)}) ) @@ -138,7 +128,7 @@ class TestWorkersActivity(FixtureAPITestCase): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertDictEqual(response.json(), {'detail': 'Authentication credentials were not provided.'}) - def test_process_activity_stats_requires_admin(self): + def test_process_activity_stats_private(self): self.process.corpus = self.private_corpus self.process.save() self.client.force_login(self.user)