|
16 | 16 |
|
17 | 17 | from openedx_authz import api |
18 | 18 | from openedx_authz.constants import permissions |
19 | | -from openedx_authz.rest_api.data import RoleOperationError, RoleOperationStatus, SortField, UserAssignmentsFilter |
| 19 | +from openedx_authz.rest_api.data import RoleOperationError, RoleOperationStatus, UserAssignmentsFilter |
20 | 20 | from openedx_authz.rest_api.decorators import authz_permissions, view_auth_classes |
21 | 21 | from openedx_authz.rest_api.utils import ( |
22 | 22 | filter_allowed_assignments, |
|
27 | 27 | get_user_map, |
28 | 28 | sort_users, |
29 | 29 | ) |
| 30 | +from openedx_authz.rest_api.v1.filters import TeamMemberOrderingFilter, TeamMemberSearchFilter |
30 | 31 | from openedx_authz.rest_api.v1.paginators import AuthZAPIViewPagination |
31 | 32 | from openedx_authz.rest_api.v1.permissions import DynamicScopePermission |
32 | 33 | from openedx_authz.rest_api.v1.serializers import ( |
@@ -465,6 +466,7 @@ class TeamMembersAPIView(APIView): |
465 | 466 | """ |
466 | 467 |
|
467 | 468 | pagination_class = AuthZAPIViewPagination |
| 469 | + filter_backends = [TeamMemberSearchFilter, TeamMemberOrderingFilter] |
468 | 470 |
|
469 | 471 | @apidocs.schema( |
470 | 472 | parameters=[ |
@@ -494,32 +496,21 @@ def get(self, request: HttpRequest) -> Response: |
494 | 496 | # Group assignments by user |
495 | 497 | users_with_assignments = get_user_assignment_map(user_role_assignments) |
496 | 498 |
|
497 | | - scopes = query_params.get("scopes") |
498 | | - orgs = query_params.get("orgs") |
499 | | - search = query_params.get("search") |
500 | | - order = query_params.get("order") |
501 | | - sort_by = query_params.get("sort_by", SortField.USERNAME) |
502 | | - |
503 | | - # Filter by scopes |
504 | 499 | users_with_assignments = filter_user_assignments( |
505 | 500 | users_with_assignments=users_with_assignments, |
506 | 501 | by=UserAssignmentsFilter.SCOPES, |
507 | | - values=scopes, |
| 502 | + values=query_params.get("scopes"), |
508 | 503 | ) |
509 | | - |
510 | | - # Filter by orgs |
511 | 504 | users_with_assignments = filter_user_assignments( |
512 | 505 | users_with_assignments=users_with_assignments, |
513 | 506 | by=UserAssignmentsFilter.ORGS, |
514 | | - values=orgs, |
| 507 | + values=query_params.get("orgs"), |
515 | 508 | ) |
516 | 509 |
|
517 | | - team_members = TeamMemberSerializer(users_with_assignments, many=True) |
518 | | - # Search |
519 | | - filtered_team_members = filter_users(users=team_members.data, search=search, roles=None) |
520 | | - # Sort |
521 | | - sorted_team_members = sort_users(users=filtered_team_members, sort_by=sort_by, order=order) |
522 | | - # Paginate |
| 510 | + team_members = TeamMemberSerializer(users_with_assignments, many=True).data |
| 511 | + for backend in self.filter_backends: |
| 512 | + team_members = backend().filter_queryset(request, team_members, self) |
| 513 | + |
523 | 514 | paginator = self.pagination_class() |
524 | | - paginated_response_data = paginator.paginate_queryset(sorted_team_members, request) |
| 515 | + paginated_response_data = paginator.paginate_queryset(team_members, request) |
525 | 516 | return paginator.get_paginated_response(paginated_response_data) |
0 commit comments