diff --git a/swh/web/add_forge_now/views.py b/swh/web/add_forge_now/views.py --- a/swh/web/add_forge_now/views.py +++ b/swh/web/add_forge_now/views.py @@ -20,7 +20,7 @@ AddForgeNowRequestPublicSerializer, AddForgeNowRequestSerializer, ) -from swh.web.common.utils import has_add_forge_now_permission +from swh.web.auth.utils import is_add_forge_now_moderator def add_forge_request_list_datatables(request: HttpRequest) -> HttpResponse: @@ -69,7 +69,7 @@ paginator = Paginator(add_forge_requests, per_page) page = paginator.page(page_num) - if has_add_forge_now_permission(request.user): + if is_add_forge_now_moderator(request.user): requests = AddForgeNowRequestSerializer(page.object_list, many=True).data else: requests = AddForgeNowRequestPublicSerializer(page.object_list, many=True).data @@ -118,7 +118,7 @@ @user_passes_test( - has_add_forge_now_permission, + is_add_forge_now_moderator, redirect_field_name="next_path", login_url=settings.LOGIN_URL, ) diff --git a/swh/web/admin/add_forge_now.py b/swh/web/admin/add_forge_now.py --- a/swh/web/admin/add_forge_now.py +++ b/swh/web/admin/add_forge_now.py @@ -8,14 +8,14 @@ from django.shortcuts import render from swh.web.admin.adminurls import admin_route -from swh.web.common.utils import has_add_forge_now_permission +from swh.web.auth.utils import is_add_forge_now_moderator @admin_route( r"add-forge/requests/", view_name="add-forge-now-requests-moderation", ) -@user_passes_test(has_add_forge_now_permission, login_url=settings.LOGIN_URL) +@user_passes_test(is_add_forge_now_moderator, login_url=settings.LOGIN_URL) def add_forge_now_requests_moderation_dashboard(request): """Moderation dashboard to allow listing current requests.""" return render( @@ -29,7 +29,7 @@ r"add-forge/request/(?P(\d)+)/", view_name="add-forge-now-request-dashboard", ) -@user_passes_test(has_add_forge_now_permission, login_url=settings.LOGIN_URL) +@user_passes_test(is_add_forge_now_moderator, login_url=settings.LOGIN_URL) def add_forge_now_request_dashboard(request, request_id): """Moderation dashboard to allow listing current requests.""" return render( diff --git a/swh/web/api/views/add_forge_now.py b/swh/web/api/views/add_forge_now.py --- a/swh/web/api/views/add_forge_now.py +++ b/swh/web/api/views/add_forge_now.py @@ -24,9 +24,9 @@ from swh.web.add_forge_now.models import RequestStatus as AddForgeNowRequestStatus from swh.web.api.apidoc import api_doc, format_docstring from swh.web.api.apiurls import api_route -from swh.web.auth.utils import ADD_FORGE_MODERATOR_PERMISSION +from swh.web.auth.utils import is_add_forge_now_moderator from swh.web.common.exc import BadInputExc -from swh.web.common.utils import has_add_forge_now_permission, reverse +from swh.web.common.utils import reverse def _block_while_testing(): @@ -245,7 +245,7 @@ "You must be authenticated to update a new add-forge request" ) - if not has_add_forge_now_permission(request.user): + if not is_add_forge_now_moderator(request.user): return HttpResponseForbidden("You are not a moderator") add_forge_request = ( @@ -337,7 +337,7 @@ paginator = Paginator(add_forge_requests, per_page) page = paginator.page(page_num) - if request.user.has_perm(ADD_FORGE_MODERATOR_PERMISSION): + if is_add_forge_now_moderator(request.user): requests = AddForgeNowRequestSerializer(page.object_list, many=True).data else: requests = AddForgeNowRequestPublicSerializer(page.object_list, many=True).data @@ -396,9 +396,7 @@ request=add_forge_request ).order_by("id") - if request.user.is_authenticated and request.user.has_perm( - ADD_FORGE_MODERATOR_PERMISSION - ): + if is_add_forge_now_moderator(request.user): data = AddForgeNowRequestSerializer(add_forge_request).data history = AddForgeNowRequestHistorySerializer( request_history, many=True, context={"request": request} diff --git a/swh/web/auth/utils.py b/swh/web/auth/utils.py --- a/swh/web/auth/utils.py +++ b/swh/web/auth/utils.py @@ -114,3 +114,13 @@ raise ForbiddenExc return user_passes_test(check_perms) + + +def is_add_forge_now_moderator(user) -> bool: + """Is a user considered an add-forge-now moderator? + + Returns + True if a user is staff or has add forge now moderator permission + + """ + return user.is_staff or user.has_perm(ADD_FORGE_MODERATOR_PERMISSION) diff --git a/swh/web/common/utils.py b/swh/web/common/utils.py --- a/swh/web/common/utils.py +++ b/swh/web/common/utils.py @@ -517,13 +517,3 @@ reverse(new_route, query_params=args), permanent=permanent, ) - - -def has_add_forge_now_permission(user) -> bool: - """Is a user considered an add-forge-now moderator? - - Returns - True if a user is staff or has add forge now moderator permission - - """ - return user.is_staff or user.has_perm(ADD_FORGE_MODERATOR_PERMISSION)