Skip to content

Commit d8f68b5

Browse files
committed
refactor: update RoleUserAPIView to utilize get_user_map for user role assignments
1 parent 4bd284b commit d8f68b5

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

openedx_authz/rest_api/v1/views.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,13 @@
1515
from rest_framework.views import APIView
1616

1717
from openedx_authz import api
18-
from openedx_authz.rest_api.utils import filter_users, get_user_by_username_or_email, sort_users, view_auth_classes
18+
from openedx_authz.rest_api.utils import (
19+
filter_users,
20+
get_user_by_username_or_email,
21+
get_user_map,
22+
sort_users,
23+
view_auth_classes,
24+
)
1925
from openedx_authz.rest_api.v1.paginators import AuthZAPIViewPagination
2026
from openedx_authz.rest_api.v1.permissions import HasLibraryPermission
2127
from openedx_authz.rest_api.v1.serializers import (
@@ -193,7 +199,11 @@ def get(self, request: HttpRequest) -> Response:
193199
query_params = serializer.validated_data
194200

195201
user_role_assignments = api.get_all_user_role_assignments_in_scope(query_params["scope"])
196-
response_data = UserRoleAssignmentSerializer(user_role_assignments, many=True).data
202+
usernames = {assignment.subject.username for assignment in user_role_assignments}
203+
response_data = UserRoleAssignmentSerializer(
204+
user_role_assignments, many=True, context={"user_map": get_user_map(usernames)}
205+
).data
206+
197207
filtered_users = filter_users(response_data, query_params["search"], query_params["roles"])
198208
user_role_assignments = sort_users(filtered_users, query_params["sort_by"], query_params["order"])
199209

@@ -345,17 +355,16 @@ def get(self, request: HttpRequest) -> Response:
345355
serializer = ListRolesWithScopeSerializer(data=request.query_params)
346356
serializer.is_valid(raise_exception=True)
347357

348-
scope = api.ScopeData(namespaced_key=serializer.validated_data["scope"])
358+
scope = api.ContentLibraryData(external_key=serializer.validated_data["scope"])
349359
roles = api.get_role_definitions_in_scope(scope)
350360

351361
response_data = []
352362
for role in roles:
353363
users = api.get_users_for_role(role.external_key)
354-
permissions = [perm.action.external_key for perm in role.permissions]
355364
response_data.append(
356365
{
357366
"role": role.external_key,
358-
"permissions": permissions,
367+
"permissions": role.get_permission_identifiers(),
359368
"user_count": len(users),
360369
}
361370
)

0 commit comments

Comments
 (0)