|
10 | 10 | """ |
11 | 11 |
|
12 | 12 | from django.contrib.auth import get_user_model |
| 13 | +from django.db.models import Q |
13 | 14 |
|
14 | 15 | from openedx_authz.api.data import ( |
15 | 16 | ActionData, |
@@ -254,11 +255,14 @@ def get_all_user_role_assignments_in_scope( |
254 | 255 |
|
255 | 256 |
|
256 | 257 | def _filter_allowed_assignments( |
257 | | - user_external_key: str, assignments: list[RoleAssignmentData] |
| 258 | + assignments: list[RoleAssignmentData], user_external_key: str = None |
258 | 259 | ) -> list[RoleAssignmentData]: |
259 | 260 | """ |
260 | 261 | Filter the given role assignments to only include those that the user has permission to view. |
261 | 262 | """ |
| 263 | + if not user_external_key: |
| 264 | + # If no user is specified, return all assignments |
| 265 | + return assignments |
262 | 266 | allowed_assignments: list[RoleAssignmentData] = [] |
263 | 267 | for assignment in assignments: |
264 | 268 | permission = None |
@@ -397,20 +401,18 @@ def get_superadmin_assignments(user_external_keys: list[str] | None = None) -> l |
397 | 401 | Returns: |
398 | 402 | list[SuperAdminAssignmentData]: The superadmin data |
399 | 403 | """ |
400 | | - # Retrieve user data to check if they are a superusers |
401 | | - if user_external_keys is None: |
402 | | - requested_users = User.objects.filter(is_active=True) |
403 | | - else: |
404 | | - requested_users = User.objects.filter(username__in=user_external_keys, is_active=True) |
| 404 | + superadmin_filter = Q(is_active=True) & (Q(is_staff=True) | Q(is_superuser=True)) |
| 405 | + if user_external_keys is not None: |
| 406 | + superadmin_filter &= Q(username__in=user_external_keys) |
| 407 | + requested_users = User.objects.filter(superadmin_filter) |
405 | 408 |
|
406 | 409 | superadmin_assignments: list[SuperAdminAssignmentData] = [] |
407 | 410 | for requested_user in requested_users: |
408 | | - if requested_user.is_staff or requested_user.is_superuser: |
409 | | - superadmin_assignments.append( |
410 | | - SuperAdminAssignmentData( |
411 | | - subject=UserData(external_key=requested_user.username), |
412 | | - is_staff=requested_user.is_staff, |
413 | | - is_superuser=requested_user.is_superuser, |
414 | | - ) |
| 411 | + superadmin_assignments.append( |
| 412 | + SuperAdminAssignmentData( |
| 413 | + subject=UserData(external_key=requested_user.username), |
| 414 | + is_staff=requested_user.is_staff, |
| 415 | + is_superuser=requested_user.is_superuser, |
415 | 416 | ) |
| 417 | + ) |
416 | 418 | return superadmin_assignments |
0 commit comments