Skip to content

Commit

Permalink
resolve: solve some problems
Browse files Browse the repository at this point in the history
  • Loading branch information
rolin999 committed Dec 28, 2024
1 parent b3b31c3 commit 9743570
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 4 deletions.
3 changes: 2 additions & 1 deletion src/bk-user/bkuser/apis/open_v3/serializers/tenant.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from rest_framework import serializers

from bkuser.apps.tenant.constants import TenantStatus
from bkuser.apps.tenant.models import TenantUser
from bkuser.biz.tenant import TenantUserHandler
from bkuser.common.serializers import StringArrayField

Expand All @@ -42,5 +43,5 @@ class TenantUserDisplayNameListOutputSLZ(serializers.Serializer):
bk_username = serializers.CharField(help_text="蓝鲸唯一标识", source="id")
display_name = serializers.SerializerMethodField(help_text="用户展示名称")

def get_display_name(self, obj) -> str:
def get_display_name(self, obj: TenantUser) -> str:
return TenantUserHandler.generate_tenant_user_display_name(obj)
5 changes: 4 additions & 1 deletion src/bk-user/bkuser/apis/open_v3/views/tenant.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def get(self, request, *args, **kwargs):
class TenantUserDisplayNameListApi(OpenApiCommonMixin, generics.ListAPIView):
"""
批量根据用户 bk_username 获取用户展示名
TODO性能较高,只查询所需字段,后续开发 DisplayName 支持表达式配置时添加 Cache 方案
TODO: 性能较高,只查询所需字段,后续开发 DisplayName 支持表达式配置时添加 Cache 方案
"""

pagination_class = None
Expand All @@ -59,6 +59,8 @@ def get_queryset(self):
slz.is_valid(raise_exception=True)
data = slz.validated_data

# TODO: 由于目前 DisplayName 渲染只与 full_name 相关,所以只查询 full_name
# 后续支持表达式,则需要查询表达式可配置的所有字段
return (
TenantUser.objects.filter(id__in=data["bk_usernames"])
.select_related("data_source_user")
Expand All @@ -69,6 +71,7 @@ def get_queryset(self):
tags=["open_v3.tenant"],
operation_id="batch_query_user_display_name",
operation_description="批量查询用户展示名",
query_serializer=TenantUserDisplayNameListInputSLZ(),
responses={status.HTTP_200_OK: TenantUserDisplayNameListOutputSLZ(many=True)},
)
def get(self, request, *args, **kwargs):
Expand Down
3 changes: 1 addition & 2 deletions src/bk-user/tests/apis/open_v3/test_tenant.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ def test_standard(self, api_client, default_tenant, random_tenant):
assert set(resp.data["results"][0].keys()) == {"id", "name", "status"}


@pytest.mark.usefixtures("_init_tenant_users_depts")
class TestTenantUserDisplayNameList:
@pytest.mark.usefixtures("_init_tenant_users_depts")
def test_standard(self, api_client):
zhangsan_id = TenantUser.objects.get(data_source_user__code="zhangsan").id
lisi_id = TenantUser.objects.get(data_source_user__code="lisi").id
Expand All @@ -45,7 +45,6 @@ def test_standard(self, api_client):
assert {t["bk_username"] for t in resp.data} == {zhangsan_id, lisi_id}
assert {t["display_name"] for t in resp.data} == {"张三", "李四"}

@pytest.mark.usefixtures("_init_tenant_users_depts")
def test_with_invalid_bk_usernames(self, api_client):
zhangsan_id = TenantUser.objects.get(data_source_user__code="zhangsan").id
resp = api_client.get(
Expand Down

0 comments on commit 9743570

Please sign in to comment.