Skip to content

Commit 308b0ea

Browse files
committed
squash!: Apply suggestions
1 parent 7ffbc8e commit 308b0ea

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.5.0 - 2026-04-09
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,
@@ -254,11 +255,14 @@ def get_all_user_role_assignments_in_scope(
254255

255256

256257
def _filter_allowed_assignments(
257-
user_external_key: str, assignments: list[RoleAssignmentData]
258+
assignments: list[RoleAssignmentData], user_external_key: str = None
258259
) -> list[RoleAssignmentData]:
259260
"""
260261
Filter the given role assignments to only include those that the user has permission to view.
261262
"""
263+
if not user_external_key:
264+
# If no user is specified, return all assignments
265+
return assignments
262266
allowed_assignments: list[RoleAssignmentData] = []
263267
for assignment in assignments:
264268
permission = None
@@ -397,20 +401,18 @@ def get_superadmin_assignments(user_external_keys: list[str] | None = None) -> l
397401
Returns:
398402
list[SuperAdminAssignmentData]: The superadmin data
399403
"""
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)
405408

406409
superadmin_assignments: list[SuperAdminAssignmentData] = []
407410
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,
415416
)
417+
)
416418
return superadmin_assignments

openedx_authz/rest_api/v1/serializers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ def get_org(self, obj: api.RoleAssignmentData | api.SuperAdminAssignmentData) ->
305305
case api.SuperAdminAssignmentData():
306306
return "*"
307307
case api.RoleAssignmentData():
308-
return getattr(obj.scope, "org", None)
308+
return getattr(obj.scope, "org", "")
309309

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

0 commit comments

Comments
 (0)