|
8 | 8 | import logging |
9 | 9 |
|
10 | 10 | import edx_api_doc_tools as apidocs |
11 | | -from common.djangoapps.student.models.user import get_user_by_username_or_email |
12 | 11 | from django.contrib.auth import get_user_model |
13 | 12 | from django.http import HttpRequest |
14 | 13 | from rest_framework import status |
|
18 | 17 |
|
19 | 18 | from openedx_authz.api.data import ActionData, ScopeData, UserData |
20 | 19 | from openedx_authz.api.permissions import has_permission |
21 | | -from openedx_authz.api.roles import get_role_definitions_in_scope |
| 20 | +from openedx_authz.api.roles import get_role_definitions_in_scope, get_role_assignments_in_scope |
22 | 21 | from openedx_authz.api.users import ( |
23 | 22 | assign_role_to_user_in_scope, |
24 | 23 | get_user_role_assignments_for_role_in_scope, |
|
35 | 34 | RemoveUserFromRoleWithScopeSerializer, |
36 | 35 | ) |
37 | 36 |
|
| 37 | +try: |
| 38 | + from common.djangoapps.student.models.user import get_user_by_username_or_email |
| 39 | +except ImportError: |
| 40 | + get_user_by_username_or_email = None |
| 41 | + |
38 | 42 | logger = logging.getLogger(__name__) |
39 | 43 |
|
40 | 44 | User = get_user_model() |
@@ -110,10 +114,24 @@ def get(self, request: HttpRequest) -> Response: |
110 | 114 | serializer = ListUsersInRoleWithScopeSerializer(data=request.query_params) |
111 | 115 | serializer.is_valid(raise_exception=True) |
112 | 116 |
|
113 | | - role_name = serializer.validated_data["role"] |
| 117 | + role_name = serializer.validated_data.get("role") |
114 | 118 | scope = serializer.validated_data["scope"] |
115 | 119 |
|
116 | 120 | response_data = [] |
| 121 | + |
| 122 | + # TODO: Should this be another endpoint? |
| 123 | + if not role_name: |
| 124 | + role_assignments = get_role_assignments_in_scope(ScopeData(name=scope)) |
| 125 | + for role_assignment in role_assignments: |
| 126 | + response_data.append( |
| 127 | + { |
| 128 | + "role": role_assignment.role.name, |
| 129 | + # TODO: Include users by role |
| 130 | + "users": [], |
| 131 | + } |
| 132 | + ) |
| 133 | + return Response(response_data, status=status.HTTP_200_OK) |
| 134 | + |
117 | 135 | role_assignments = get_user_role_assignments_for_role_in_scope(role_name, scope) |
118 | 136 | for assignment in role_assignments: |
119 | 137 | # TODO: Should we get all users at once instead of one by one? |
|
0 commit comments