UnisKB/apps/users/api/user.py

231 lines
5.8 KiB
Python
Raw Permalink Normal View History

2025-04-14 12:11:23 +00:00
# coding=utf-8
"""
@project: MaxKB
@Author虎虎
@file user.py
@date2025/4/14 19:23
@desc:
"""
2025-04-17 02:35:02 +00:00
from drf_spectacular.types import OpenApiTypes
from drf_spectacular.utils import OpenApiParameter
2025-04-14 12:11:23 +00:00
from common.mixins.api_mixin import APIMixin
2025-06-07 11:03:18 +00:00
from common.result import ResultSerializer, DefaultResultSerializer
2025-04-28 09:36:56 +00:00
from users.serializers.user import UserProfileResponse, CreateUserSerializer, UserManageSerializer, \
2025-06-07 11:03:18 +00:00
UserInstanceSerializer, RePasswordSerializer, CheckCodeSerializer, SendEmailSerializer
2025-04-28 09:36:56 +00:00
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers
2025-04-14 12:11:23 +00:00
class ApiUserProfileResponse(ResultSerializer):
def get_data(self):
return UserProfileResponse()
2025-05-27 01:47:33 +00:00
class RoleSettingRequestSerializer(serializers.Serializer):
role_id = serializers.CharField(required=True, label=_('Role ID'))
workspace_ids = serializers.ListField(
child=serializers.CharField(required=True),
required=True,
label=_('Workspace IDs')
)
class CreateUserRequestSerializer(CreateUserSerializer):
role_setting = RoleSettingRequestSerializer(required=False, label=_('Role Setting'), allow_null=True, many=True)
2025-04-14 12:11:23 +00:00
class UserProfileAPI(APIMixin):
@staticmethod
def get_response():
return ApiUserProfileResponse
2025-04-17 02:35:02 +00:00
2025-04-27 08:26:40 +00:00
@staticmethod
def get_request():
2025-05-27 01:47:33 +00:00
return CreateUserRequestSerializer
2025-04-27 08:26:40 +00:00
2025-04-28 09:36:56 +00:00
@staticmethod
def get_parameters():
return [OpenApiParameter(
name="user_id",
description=_('User ID'),
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
required=True,
)]
2025-05-15 04:07:07 +00:00
class WorkspaceUserAPI(APIMixin):
@staticmethod
def get_parameters():
return [OpenApiParameter(
name="workspace_id",
description=_('Workspace ID'),
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
required=True,
)]
@staticmethod
def get_response():
return WorkspaceUserListResponse
class WorkspaceUser(serializers.Serializer):
id = serializers.CharField(required=True, label=_('id'))
username = serializers.CharField(required=True, label=_('Username'))
class WorkspaceUserListResponse(ResultSerializer):
def get_data(self):
2025-05-20 09:14:12 +00:00
return WorkspaceUser(many=True)
2025-05-15 04:07:07 +00:00
2025-05-13 06:39:47 +00:00
class UserPasswordResponse(APIMixin):
@staticmethod
def get_response():
return PasswordResponse
class Password(serializers.Serializer):
password = serializers.CharField(required=True, label=_('Password'))
class PasswordResponse(ResultSerializer):
def get_data(self):
return Password()
2025-05-27 01:47:33 +00:00
class EditUserRequestSerializer(UserManageSerializer.UserEditInstance):
role_setting = RoleSettingRequestSerializer(required=False, label=_('Role Setting'), allow_null=True, many=True)
2025-04-28 09:36:56 +00:00
class EditUserApi(APIMixin):
@staticmethod
def get_parameters():
return [OpenApiParameter(
name="user_id",
description=_('User ID'),
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
required=True,
)]
@staticmethod
def get_request():
2025-05-27 01:47:33 +00:00
return EditUserRequestSerializer
2025-04-28 09:36:56 +00:00
class DeleteUserApi(APIMixin):
@staticmethod
def get_parameters():
return [OpenApiParameter(
name="user_id",
description=_('User ID'),
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
required=True,
)]
2025-06-03 10:35:42 +00:00
@staticmethod
def get_request():
return serializers.ListSerializer(child=serializers.CharField(required=True), required=True,
label=_('User IDs'))
2025-04-28 09:36:56 +00:00
class ChangeUserPasswordApi(APIMixin):
@staticmethod
def get_request():
return UserManageSerializer.RePasswordInstance
class UserListResponse(ResultSerializer):
def get_data(self):
2025-05-20 09:14:12 +00:00
return UserInstanceSerializer(many=True)
2025-04-28 09:36:56 +00:00
class UserPageApi(APIMixin):
@staticmethod
def get_parameters():
return [OpenApiParameter(
name="email_or_username",
description=_('Email or Username'),
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
required=False,
)]
@staticmethod
def get_response():
return UserListResponse
class UserListApi(APIMixin):
@staticmethod
def get_parameters():
return [OpenApiParameter(
name="workspace_id",
description=_('Workspace ID'),
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
required=False,
)]
@staticmethod
def get_response():
return UserListResponse
2025-04-17 02:35:02 +00:00
class TestWorkspacePermissionUserApi(APIMixin):
@staticmethod
def get_parameters():
return [OpenApiParameter(
# 参数的名称是done
name="workspace_id",
# 对参数的备注
description="工作空间id",
# 指定参数的类型
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
# 指定必须给
required=True,
)]
2025-06-07 11:03:18 +00:00
class ResetPasswordAPI(APIMixin):
@staticmethod
def get_request():
return RePasswordSerializer
class CheckCodeAPI(APIMixin):
@staticmethod
def get_request():
return CheckCodeSerializer
@staticmethod
def get_response():
return DefaultResultSerializer
class SendEmailAPI(APIMixin):
@staticmethod
def get_request():
return SendEmailSerializer
@staticmethod
def get_response():
return DefaultResultSerializer
2025-06-12 03:24:55 +00:00
class LanguageSerializer(serializers.Serializer):
language = serializers.CharField(required=True, label=_('Language'))
class SwitchUserLanguageAPI(APIMixin):
@staticmethod
def get_request():
return LanguageSerializer