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

Merge branch 'activities-internal' into 'master'

Fix internal user check to update worker activities

Closes #733

See merge request !1336
parents d80610fc 4541bb92
No related branches found
No related tags found
1 merge request!1336Fix internal user check to update worker activities
......@@ -8,6 +8,7 @@ from arkindex.dataimport.models import ActivityState, DataImportMode, WorkerActi
from arkindex.documents.models import Classification, ClassificationState, Element, MLClass
from arkindex.documents.tasks import initialize_activity
from arkindex.project.tests import FixtureTestCase
from arkindex.users.models import User
class TestWorkerActivity(FixtureTestCase):
......@@ -84,14 +85,22 @@ class TestWorkerActivity(FixtureTestCase):
def test_put_activity_requires_internal(self):
"""
Only internal users (workers) are able to update the state of a worker activity
Internal users with an instance admin are able to update a worker activity
"""
internal_admin_user = User.objects.create_user('god@test.test', 'G0D')
internal_admin_user.is_internal = True
internal_admin_user.is_admin = True
internal_admin_user.save()
cases = (
(None, status.HTTP_403_FORBIDDEN, 0),
(self.user, status.HTTP_403_FORBIDDEN, 2),
(self.superuser, status.HTTP_403_FORBIDDEN, 2),
(self.internal_user, status.HTTP_200_OK, 3),
(internal_admin_user, status.HTTP_200_OK, 3)
)
for user, status_code, requests_count in cases:
self.activity.state = WorkerActivityState.Queued
self.activity.save()
if user:
self.client.force_login(user)
with self.assertNumQueries(requests_count):
......
......@@ -7,7 +7,7 @@ class AllowNone(object):
Systematically refuse permission
"""
def has_permission(self, request, view):
return None
return False
class InternalGroupPermissionMixin(object):
......@@ -17,9 +17,7 @@ class InternalGroupPermissionMixin(object):
"""
def has_permission(self, request, view):
if request.user.is_authenticated and \
not request.user.is_admin and \
request.user.is_internal:
if request.user.is_authenticated and request.user.is_internal:
return True
return super().has_permission(request, view)
......
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