Skip to content

Commit aaa9f28

Browse files
committed
squash!: Apply suggestions
1 parent 76f3a65 commit aaa9f28

3 files changed

Lines changed: 17 additions & 15 deletions

File tree

CHANGELOG.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Unreleased
2020
Added
2121
=====
2222

23-
* Add the ``/api/authz/v1/users/<username>/assignments`` endpoint to get a list of role assignations for a user.
23+
* Add the ``/api/authz/v1/users/<username>/assignments/`` endpoint to get a list of role assignations for a user.
2424

2525
1.7.0 - 2026-04-14
2626
******************

openedx_authz/api/users.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"""
1111

1212
from django.contrib.auth import get_user_model
13+
from django.db.models import Q
1314

1415
from openedx_authz.api.data import (
1516
ActionData,
@@ -256,11 +257,14 @@ def get_all_user_role_assignments_in_scope(
256257

257258

258259
def _filter_allowed_assignments(
259-
user_external_key: str, assignments: list[RoleAssignmentData]
260+
assignments: list[RoleAssignmentData], user_external_key: str = None
260261
) -> list[RoleAssignmentData]:
261262
"""
262263
Filter the given role assignments to only include those that the user has permission to view.
263264
"""
265+
if not user_external_key:
266+
# If no user is specified, return all assignments
267+
return assignments
264268
allowed_assignments: list[RoleAssignmentData] = []
265269
for assignment in assignments:
266270
permission = None
@@ -425,20 +429,18 @@ def get_superadmin_assignments(user_external_keys: list[str] | None = None) -> l
425429
Returns:
426430
list[SuperAdminAssignmentData]: The superadmin data
427431
"""
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)
433436

434437
superadmin_assignments: list[SuperAdminAssignmentData] = []
435438
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,
443444
)
445+
)
444446
return superadmin_assignments

openedx_authz/rest_api/v1/serializers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ def get_org(self, obj: api.RoleAssignmentData | api.SuperAdminAssignmentData) ->
338338
case api.SuperAdminAssignmentData():
339339
return "*"
340340
case api.RoleAssignmentData():
341-
return getattr(obj.scope, "org", None)
341+
return getattr(obj.scope, "org", "")
342342

343343
def get_scope(self, obj: api.RoleAssignmentData | api.SuperAdminAssignmentData) -> str:
344344
"""Get the scope for the given role assignment."""

0 commit comments

Comments
 (0)