1515from rest_framework .views import APIView
1616
1717from openedx_authz import api
18- from openedx_authz .rest_api .enums import SortField , SortOrder
1918from openedx_authz .rest_api .utils import filter_users , get_user_by_username_or_email , sort_users , view_auth_classes
2019from openedx_authz .rest_api .v1 .paginators import AuthZAPIViewPagination
2120from openedx_authz .rest_api .v1 .serializers import (
2625 PermissionValidationResponseSerializer ,
2726 PermissionValidationSerializer ,
2827 RemoveUserFromRoleWithScopeSerializer ,
29- RoleAssignmentSerializer ,
28+ UserRoleAssignmentSerializer ,
3029)
3130
3231logger = logging .getLogger (__name__ )
@@ -107,22 +106,16 @@ def get(self, request: HttpRequest) -> Response:
107106 """Retrieve all users with role assignments within a specific scope."""
108107 serializer = ListUsersInRoleWithScopeSerializer (data = request .query_params )
109108 serializer .is_valid (raise_exception = True )
110- user_role_assignments = api . get_all_user_role_assignments_in_scope ( serializer .validated_data [ "scope" ])
109+ query_params = serializer .validated_data
111110
112- paginator = self .pagination_class ()
113- paginated_assignments = paginator .paginate_queryset (user_role_assignments , request )
114-
115- response_serializer = RoleAssignmentSerializer (paginated_assignments , many = True )
116-
117- sort_by = serializer .validated_data .get ("sort_by" , SortField .USERNAME )
118- order = serializer .validated_data .get ("order" , SortOrder .ASC )
119- search = serializer .validated_data .get ("search" )
120- roles = serializer .validated_data .get ("roles" )
121-
122- filtered_users = filter_users (response_serializer .data , search , roles )
123- user_role_assignments = sort_users (filtered_users , sort_by , order )
111+ user_role_assignments = api .get_all_user_role_assignments_in_scope (query_params ["scope" ])
112+ response_data = UserRoleAssignmentSerializer (user_role_assignments , many = True ).data
113+ filtered_users = filter_users (response_data , query_params ["search" ], query_params ["roles" ])
114+ user_role_assignments = sort_users (filtered_users , query_params ["sort_by" ], query_params ["order" ])
124115
125- return paginator .get_paginated_response (user_role_assignments )
116+ paginator = self .pagination_class ()
117+ paginated_response_data = paginator .paginate_queryset (user_role_assignments , request )
118+ return paginator .get_paginated_response (paginated_response_data )
126119
127120 @apidocs .schema (
128121 body = AddUserToRoleWithScopeSerializer ,
@@ -224,7 +217,7 @@ def get(self, request: HttpRequest) -> Response:
224217 response_data = []
225218 for role in roles :
226219 users = api .get_users_for_role (role .external_key )
227- permissions = [perm .action .external_key for perm in role .permissions ] if role . permissions else []
220+ permissions = [perm .action .external_key for perm in role .permissions ]
228221 response_data .append (
229222 {
230223 "role" : role .external_key ,
@@ -233,8 +226,8 @@ def get(self, request: HttpRequest) -> Response:
233226 }
234227 )
235228
229+ serializer = ListRolesWithScopeResponseSerializer (response_data , many = True )
230+
236231 paginator = self .pagination_class ()
237232 paginated_response_data = paginator .paginate_queryset (response_data , request )
238-
239- serializer = ListRolesWithScopeResponseSerializer (paginated_response_data , many = True )
240- return paginator .get_paginated_response (serializer .data )
233+ return paginator .get_paginated_response (paginated_response_data )
0 commit comments