| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- # coding=utf-8
- """
- @project: MaxKB
- @Author:虎虎
- @file: user.py
- @date:2025/4/14 19:23
- @desc:
- """
- from drf_spectacular.types import OpenApiTypes
- from drf_spectacular.utils import OpenApiParameter
- from common.mixins.api_mixin import APIMixin
- from common.result import ResultSerializer, DefaultResultSerializer
- from users.serializers.user import UserProfileResponse, CreateUserSerializer, UserManageSerializer, \
- UserInstanceSerializer, RePasswordSerializer, CheckCodeSerializer, SendEmailSerializer
- from django.utils.translation import gettext_lazy as _
- from rest_framework import serializers
- class ApiUserProfileResponse(ResultSerializer):
- def get_data(self):
- return UserProfileResponse()
- class RoleSettingRequestSerializer(serializers.Serializer):
- role_id = serializers.CharField(required=True, label=_('Role ID'))
- workspace_ids = serializers.ListField(
- child=serializers.CharField(required=False),
- required=False,
- label=_('Workspace IDs')
- )
- class CreateUserRequestSerializer(CreateUserSerializer):
- role_setting = RoleSettingRequestSerializer(required=False, label=_('Role Setting'), allow_null=True, many=True)
- class UserProfileAPI(APIMixin):
- @staticmethod
- def get_response():
- return ApiUserProfileResponse
- @staticmethod
- def get_request():
- return CreateUserRequestSerializer
- @staticmethod
- def get_parameters():
- return [OpenApiParameter(
- name="user_id",
- description=_('User ID'),
- type=OpenApiTypes.STR,
- location=OpenApiParameter.PATH,
- required=True,
- )]
- 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):
- return WorkspaceUser(many=True)
- 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()
- class EditUserRequestSerializer(UserManageSerializer.UserEditInstance):
- role_setting = RoleSettingRequestSerializer(required=False, label=_('Role Setting'), allow_null=True, many=True)
- 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():
- return EditUserRequestSerializer
- class DeleteUserApi(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():
- return serializers.ListSerializer(child=serializers.CharField(required=True), required=True,
- label=_('User IDs'))
- class ChangeUserPasswordApi(APIMixin):
- @staticmethod
- def get_request():
- return UserManageSerializer.RePasswordInstance
- class UserListResponse(ResultSerializer):
- def get_data(self):
- return UserInstanceSerializer(many=True)
- 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
- class TestWorkspacePermissionUserApi(APIMixin):
- @staticmethod
- def get_parameters():
- return [OpenApiParameter(
- # 参数的名称是done
- name="workspace_id",
- # 对参数的备注
- description="工作空间id",
- # 指定参数的类型
- type=OpenApiTypes.STR,
- location=OpenApiParameter.PATH,
- # 指定必须给
- required=True,
- )]
- 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
- class LanguageSerializer(serializers.Serializer):
- language = serializers.CharField(required=True, label=_('Language'))
- class SwitchUserLanguageAPI(APIMixin):
- @staticmethod
- def get_request():
- return LanguageSerializer
|