mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
refactor: add switch language
This commit is contained in:
parent
39ab4e155b
commit
e0d08ac590
|
|
@ -218,3 +218,13 @@ class SendEmailAPI(APIMixin):
|
|||
@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
|
||||
|
|
|
|||
|
|
@ -673,3 +673,16 @@ class CheckCodeSerializer(serializers.Serializer):
|
|||
if value is None or value != self.data.get("code"):
|
||||
raise ExceptionCodeConstants.CODE_ERROR.value.to_app_api_exception()
|
||||
return True
|
||||
|
||||
|
||||
class SwitchLanguageSerializer(serializers.Serializer):
|
||||
user_id = serializers.UUIDField(required=True, label=_('user id'))
|
||||
language = serializers.CharField(required=True, label=('language'))
|
||||
|
||||
def switch(self):
|
||||
self.is_valid(raise_exception=True)
|
||||
language = self.data.get('language')
|
||||
support_language_list = ['zh-CN', 'zh-Hant', 'en-US']
|
||||
if not support_language_list.__contains__(language):
|
||||
raise AppApiException(500, _('language only support:') + ','.join(support_language_list))
|
||||
QuerySet(User).filter(id=self.data.get('user_id')).update(language=language)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ urlpatterns = [
|
|||
path('user/captcha', views.CaptchaView.as_view(), name='captcha'),
|
||||
path('user/test', views.TestPermissionsUserView.as_view(), name="test"),
|
||||
path('user/logout', views.Logout.as_view(), name='logout'),
|
||||
path('user/language', views.SwitchUserLanguageView.as_view(), name='language'),
|
||||
path("user/send_email", views.SendEmail.as_view(), name='send_email'),
|
||||
path("user/check_code", views.CheckCode.as_view(), name='check_code'),
|
||||
path("user/re_password", views.RePasswordView.as_view(), name='re_password'),
|
||||
|
|
|
|||
|
|
@ -24,10 +24,10 @@ from models_provider.api.model import DefaultModelResponse
|
|||
from tools.serializers.tool import encryption
|
||||
from users.api.user import UserProfileAPI, TestWorkspacePermissionUserApi, DeleteUserApi, EditUserApi, \
|
||||
ChangeUserPasswordApi, UserPageApi, UserListApi, UserPasswordResponse, WorkspaceUserAPI, ResetPasswordAPI, \
|
||||
SendEmailAPI, CheckCodeAPI
|
||||
SendEmailAPI, CheckCodeAPI, SwitchUserLanguageAPI
|
||||
from users.models import User
|
||||
from users.serializers.user import UserProfileSerializer, UserManageSerializer, CheckCodeSerializer, \
|
||||
SendEmailSerializer, RePasswordSerializer
|
||||
SendEmailSerializer, RePasswordSerializer, SwitchLanguageSerializer
|
||||
|
||||
default_password = CONFIG.get('default_password', 'MaxKB@123..')
|
||||
|
||||
|
|
@ -81,6 +81,23 @@ class TestPermissionsUserView(APIView):
|
|||
return result.success(UserProfileSerializer().profile(request.user, request.auth))
|
||||
|
||||
|
||||
class SwitchUserLanguageView(APIView):
|
||||
authentication_classes = [TokenAuth]
|
||||
|
||||
@extend_schema(methods=['POST'],
|
||||
summary=_("Switch Language"),
|
||||
description=_("Switch Language"),
|
||||
operation_id=_("Switch Language"), # type: ignore
|
||||
tags=[_("User Management")], # type: ignore
|
||||
request=SwitchUserLanguageAPI.get_request(),
|
||||
)
|
||||
@log(menu='User management', operate='Switch Language',
|
||||
get_operation_object=lambda r, k: {'name': r.user.username})
|
||||
def post(self, request: Request):
|
||||
data = {**request.data, 'user_id': request.user.id}
|
||||
return result.success(SwitchLanguageSerializer(data=data).switch())
|
||||
|
||||
|
||||
class TestWorkspacePermissionUserView(APIView):
|
||||
authentication_classes = [TokenAuth]
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue