Skip to content

Commit 9b924f8

Browse files
committed
feat: enhance user filtering and add lowercase field serializer for API
1 parent f7c88ba commit 9b924f8

3 files changed

Lines changed: 18 additions & 6 deletions

File tree

openedx_authz/rest_api/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ def filter_users(users: list[dict], search: str | None, roles: list[str] | None)
9292
Returns:
9393
list[dict]: The filtered users, preserving the original order.
9494
"""
95-
if search:
96-
search = search.lower()
95+
if not search and not roles:
96+
return users
9797

9898
filtered_users = []
9999
for user in users:

openedx_authz/rest_api/v1/fields.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,20 @@ class CommaSeparatedListField(serializers.Field):
88

99
def to_internal_value(self, data):
1010
"""Convert string separated by commas to list"""
11-
return [item.strip() for item in data.split(",") if item.strip()]
11+
return [item.strip().lower() for item in data.split(",") if item.strip()]
1212

1313
def to_representation(self, value):
1414
"""Convert list to string separated by commas"""
15-
return ",".join(value)
15+
return ",".join(value).lower()
16+
17+
18+
class LowercaseCharField(serializers.CharField):
19+
"""Serializer for a lowercase string."""
20+
21+
def to_internal_value(self, data):
22+
"""Convert string to lowercase"""
23+
return data.strip().lower()
24+
25+
def to_representation(self, value):
26+
"""Convert string to lowercase"""
27+
return value.strip().lower()

openedx_authz/rest_api/v1/serializers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from openedx_authz.rest_api.enums import SortField, SortOrder
66
from openedx_authz.rest_api.utils import get_user_by_username_or_email
7-
from openedx_authz.rest_api.v1.fields import CommaSeparatedListField
7+
from openedx_authz.rest_api.v1.fields import CommaSeparatedListField, LowercaseCharField
88

99

1010
class ScopeMixin(serializers.Serializer): # pylint: disable=abstract-method
@@ -53,7 +53,7 @@ class ListUsersInRoleWithScopeSerializer(ScopeMixin): # pylint: disable=abstrac
5353
roles = CommaSeparatedListField(required=False)
5454
sort_by = serializers.ChoiceField(required=False, choices=[(e.value, e.name) for e in SortField])
5555
order = serializers.ChoiceField(required=False, choices=[(e.value, e.name) for e in SortOrder])
56-
search = serializers.CharField(required=False)
56+
search = LowercaseCharField(required=False)
5757

5858

5959
class ListRolesWithScopeSerializer(ScopeMixin): # pylint: disable=abstract-method

0 commit comments

Comments
 (0)