Skip to content

Commit

Permalink
feat: tenant user search api support filter by tenant_id
Browse files Browse the repository at this point in the history
  • Loading branch information
narasux committed May 8, 2024
1 parent cba70cf commit 8ac6cac
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class OptionalTenantUserListOutputSLZ(serializers.Serializer):


class TenantUserSearchInputSLZ(serializers.Serializer):
tenant_id = serializers.CharField(help_text="租户 ID", required=False)
keyword = serializers.CharField(help_text="搜索关键字", min_length=2, max_length=64)


Expand Down
2 changes: 1 addition & 1 deletion src/bk-user/bkuser/apis/web/organization/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
views.OptionalTenantDepartmentListApi.as_view(),
name="organization.optional_department.list",
),
# 可选租户用户列表(下拉框数据用)
# 可选租户用户上级列表(下拉框数据用)
path(
"tenants/optional-leaders/",
views.OptionalTenantUserListApi.as_view(),
Expand Down
29 changes: 15 additions & 14 deletions src/bk-user/bkuser/apis/web/organization/views/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@


class OptionalTenantUserListApi(CurrentUserTenantDataSourceMixin, generics.ListAPIView):
"""可选租户用户列表(下拉框数据用)"""
"""可选租户用户上级列表(下拉框数据用)"""

permission_classes = [IsAuthenticated, perm_class(PermAction.MANAGE_TENANT)]

Expand Down Expand Up @@ -121,21 +121,22 @@ class TenantUserSearchApi(CurrentUserTenantMixin, generics.ListAPIView):
def get_queryset(self) -> QuerySet[TenantUser]:
slz = TenantUserSearchInputSLZ(data=self.request.query_params)
slz.is_valid(raise_exception=True)
keyword = slz.validated_data["keyword"]
params = slz.validated_data

# FIXME (su) 手机 & 邮箱过滤在 DB 加密后不可用,到时候再调整
return (
TenantUser.objects.filter(
tenant_id=self.get_current_tenant_id(), data_source__type=DataSourceTypeEnum.REAL
)
.filter(
Q(data_source_user__username__icontains=keyword)
| Q(data_source_user__full_name__icontains=keyword)
| Q(data_source_user__email__icontains=keyword)
| Q(data_source_user__phone__icontains=keyword)
)
.select_related("data_source", "data_source_user")[: self.search_limit]
queryset = TenantUser.objects.filter(
tenant_id=self.get_current_tenant_id(), data_source__type=DataSourceTypeEnum.REAL
)
if tenant_id := params.get("tenant_id"):
queryset = queryset.filter(data_source__owner_tenant_id=tenant_id)

# FIXME (su) 手机 & 邮箱过滤在 DB 加密后不可用,到时候再调整
keyword = params["keyword"]
return queryset.filter(
Q(data_source_user__username__icontains=keyword)
| Q(data_source_user__full_name__icontains=keyword)
| Q(data_source_user__email__icontains=keyword)
| Q(data_source_user__phone__icontains=keyword)
).select_related("data_source", "data_source_user")[: self.search_limit]

def _get_user_organization_paths_map(self, tenant_users: QuerySet[TenantUser]) -> Dict[str, List[str]]:
"""获取租户部门的组织路径信息"""
Expand Down

0 comments on commit 8ac6cac

Please sign in to comment.