|
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, |
@@ -256,11 +257,14 @@ def get_all_user_role_assignments_in_scope( |
256 | 257 |
|
257 | 258 |
|
258 | 259 | def _filter_allowed_assignments( |
259 | | - user_external_key: str, assignments: list[RoleAssignmentData] |
| 260 | + assignments: list[RoleAssignmentData], user_external_key: str = None |
260 | 261 | ) -> list[RoleAssignmentData]: |
261 | 262 | """ |
262 | 263 | Filter the given role assignments to only include those that the user has permission to view. |
263 | 264 | """ |
| 265 | + if not user_external_key: |
| 266 | + # If no user is specified, return all assignments |
| 267 | + return assignments |
264 | 268 | allowed_assignments: list[RoleAssignmentData] = [] |
265 | 269 | for assignment in assignments: |
266 | 270 | permission = None |
@@ -425,20 +429,18 @@ def get_superadmin_assignments(user_external_keys: list[str] | None = None) -> l |
425 | 429 | Returns: |
426 | 430 | list[SuperAdminAssignmentData]: The superadmin data |
427 | 431 | """ |
428 | | - # Retrieve user data to check if they are a superusers |
429 | | - if user_external_keys is None: |
430 | | - requested_users = User.objects.filter(is_active=True) |
431 | | - else: |
432 | | - requested_users = User.objects.filter(username__in=user_external_keys, is_active=True) |
| 432 | + superadmin_filter = Q(is_active=True) & (Q(is_staff=True) | Q(is_superuser=True)) |
| 433 | + if user_external_keys is not None: |
| 434 | + superadmin_filter &= Q(username__in=user_external_keys) |
| 435 | + requested_users = User.objects.filter(superadmin_filter) |
433 | 436 |
|
434 | 437 | superadmin_assignments: list[SuperAdminAssignmentData] = [] |
435 | 438 | for requested_user in requested_users: |
436 | | - if requested_user.is_staff or requested_user.is_superuser: |
437 | | - superadmin_assignments.append( |
438 | | - SuperAdminAssignmentData( |
439 | | - subject=UserData(external_key=requested_user.username), |
440 | | - is_staff=requested_user.is_staff, |
441 | | - is_superuser=requested_user.is_superuser, |
442 | | - ) |
| 439 | + superadmin_assignments.append( |
| 440 | + SuperAdminAssignmentData( |
| 441 | + subject=UserData(external_key=requested_user.username), |
| 442 | + is_staff=requested_user.is_staff, |
| 443 | + is_superuser=requested_user.is_superuser, |
443 | 444 | ) |
| 445 | + ) |
444 | 446 | return superadmin_assignments |
0 commit comments