Skip to content
Snippets Groups Projects
Commit 4541bb92 authored by Valentin Rigal's avatar Valentin Rigal Committed by Bastien Abadie
Browse files

Fix internal user check to update worker activities

parent d80610fc
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