Skip to content

Commit

Permalink
fix(saas/search): fix profiles/search response userinfo miss account_… (
Browse files Browse the repository at this point in the history
TencentBlueKing#890)

* fix(saas/search): fix profiles/search response userinfo miss account_expiration_date
* fix(saas/search): /search response body same with /profile/search
  • Loading branch information
wklken authored Jan 30, 2023
1 parent f4ad978 commit 8d36ca6
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 5 deletions.
25 changes: 22 additions & 3 deletions src/api/bkuser_core/api/web/profile/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,19 @@
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
"""
from typing import Dict

from django.conf import settings
from rest_framework import serializers

from bkuser_core.api.web.serializers import StringArrayField
from bkuser_core.api.web.utils import escape_value, get_default_category_id, get_raw_password
from bkuser_core.api.web.utils import (
escape_value,
expand_extra_fields,
get_default_category_id,
get_extras_with_default_values,
get_raw_password,
)
from bkuser_core.profiles.models import Profile
from bkuser_core.profiles.validators import validate_username

Expand Down Expand Up @@ -78,18 +85,19 @@ class ProfileSearchOutputSLZ(serializers.Serializer):
# A: 需要, 搜索结果点击后直接渲染表单进行展示/更新
id = serializers.CharField(required=False, help_text="用户ID")
username = serializers.CharField(required=False, help_text="用户名")
display_name = serializers.CharField(required=False, help_text="中文名")

qq = serializers.CharField(required=False, help_text="QQ")
email = serializers.CharField(required=False, help_text="邮箱")
telephone = serializers.CharField(required=False, help_text="电话")
wx_userid = serializers.CharField(required=False, help_text="微信用户id")
domain = serializers.CharField(required=False, help_text="域")
display_name = serializers.CharField(required=False, help_text="中文名")
status = serializers.CharField(required=False, help_text="账户状态")
staff_status = serializers.CharField(required=False, help_text="在职状态")
position = serializers.CharField(required=False, help_text="职位")
enabled = serializers.BooleanField(required=False, help_text="是否启用", default=True)
extras = serializers.JSONField(required=False, help_text="扩展字段")
password_valid_days = serializers.IntegerField(required=False, help_text="密码有效期")
account_expiration_date = serializers.CharField(required=False)
country_code = serializers.CharField(required=False, help_text="国家码")
iso_code = serializers.CharField(required=False, help_text="国家码")
time_zone = serializers.CharField(required=False, help_text="时区")
Expand All @@ -101,6 +109,17 @@ class ProfileSearchOutputSLZ(serializers.Serializer):
departments = ProfileSearchResultDepartmentSerializer(many=True, required=False, help_text="部门列表")
leaders = ProfileSearchResultLeaderSerializer(many=True, required=False, help_text="上级列表", source="leader")

# extras = serializers.JSONField(required=False, help_text="扩展字段")
extras = serializers.SerializerMethodField(required=False, read_only=True)

def get_extras(self, obj: "Profile") -> Dict:
"""尝试从 context 中获取默认字段值"""
return get_extras_with_default_values(obj.extras)

def to_representation(self, instance):
data = super().to_representation(instance)
return expand_extra_fields(data)


class ProfileUpdateInputSLZ(serializers.ModelSerializer):
leader = serializers.ListField(child=serializers.IntegerField(), required=False)
Expand Down
1 change: 1 addition & 0 deletions src/api/bkuser_core/api/web/search/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ class SearchResultProfileOutputSLZ(serializers.Serializer):
country_code = serializers.CharField(required=False, help_text="国家码")
iso_code = serializers.CharField(required=False, help_text="国家码")
time_zone = serializers.CharField(required=False, help_text="时区")

last_login_time = serializers.DateTimeField(required=False, help_text="最后登录时间")
create_time = serializers.DateTimeField(required=False, help_text="创建时间")
update_time = serializers.DateTimeField(required=False, help_text="更新时间")
Expand Down
4 changes: 2 additions & 2 deletions src/api/bkuser_core/api/web/setting/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
from rest_framework import generics

from .serializers import SettingMetaOutputSLZ, SettingMetasListInputSLZ

# from bkuser_core.bkiam.permissions import ManageFieldPermission
from bkuser_core.api.web.constants import EXCLUDE_SETTINGS_META_IN_META_LISTVIEW
from bkuser_core.user_settings.models import SettingMeta

# from bkuser_core.bkiam.permissions import ManageFieldPermission


class SettingMetasListApi(generics.ListAPIView):
# NOTE: 后台没有任何权限管控(这个是全局的, 不关联任何目录/资源), 这里暂时使用 MANAGE_FIELD 权限替代, FIXME: 切分独立权限, 替换这里
Expand Down

0 comments on commit 8d36ca6

Please sign in to comment.