refactor: add switch language
This commit is contained in:
parent
39ab4e155b
commit
e0d08ac590
@ -218,3 +218,13 @@ class SendEmailAPI(APIMixin):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_response():
|
def get_response():
|
||||||
return DefaultResultSerializer
|
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"):
|
if value is None or value != self.data.get("code"):
|
||||||
raise ExceptionCodeConstants.CODE_ERROR.value.to_app_api_exception()
|
raise ExceptionCodeConstants.CODE_ERROR.value.to_app_api_exception()
|
||||||
return True
|
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/captcha', views.CaptchaView.as_view(), name='captcha'),
|
||||||
path('user/test', views.TestPermissionsUserView.as_view(), name="test"),
|
path('user/test', views.TestPermissionsUserView.as_view(), name="test"),
|
||||||
path('user/logout', views.Logout.as_view(), name='logout'),
|
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/send_email", views.SendEmail.as_view(), name='send_email'),
|
||||||
path("user/check_code", views.CheckCode.as_view(), name='check_code'),
|
path("user/check_code", views.CheckCode.as_view(), name='check_code'),
|
||||||
path("user/re_password", views.RePasswordView.as_view(), name='re_password'),
|
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 tools.serializers.tool import encryption
|
||||||
from users.api.user import UserProfileAPI, TestWorkspacePermissionUserApi, DeleteUserApi, EditUserApi, \
|
from users.api.user import UserProfileAPI, TestWorkspacePermissionUserApi, DeleteUserApi, EditUserApi, \
|
||||||
ChangeUserPasswordApi, UserPageApi, UserListApi, UserPasswordResponse, WorkspaceUserAPI, ResetPasswordAPI, \
|
ChangeUserPasswordApi, UserPageApi, UserListApi, UserPasswordResponse, WorkspaceUserAPI, ResetPasswordAPI, \
|
||||||
SendEmailAPI, CheckCodeAPI
|
SendEmailAPI, CheckCodeAPI, SwitchUserLanguageAPI
|
||||||
from users.models import User
|
from users.models import User
|
||||||
from users.serializers.user import UserProfileSerializer, UserManageSerializer, CheckCodeSerializer, \
|
from users.serializers.user import UserProfileSerializer, UserManageSerializer, CheckCodeSerializer, \
|
||||||
SendEmailSerializer, RePasswordSerializer
|
SendEmailSerializer, RePasswordSerializer, SwitchLanguageSerializer
|
||||||
|
|
||||||
default_password = CONFIG.get('default_password', 'MaxKB@123..')
|
default_password = CONFIG.get('default_password', 'MaxKB@123..')
|
||||||
|
|
||||||
@ -81,6 +81,23 @@ class TestPermissionsUserView(APIView):
|
|||||||
return result.success(UserProfileSerializer().profile(request.user, request.auth))
|
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):
|
class TestWorkspacePermissionUserView(APIView):
|
||||||
authentication_classes = [TokenAuth]
|
authentication_classes = [TokenAuth]
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user