diff --git a/apps/users/serializers/user_serializers.py b/apps/users/serializers/user_serializers.py index 545909341..17e8c7f26 100644 --- a/apps/users/serializers/user_serializers.py +++ b/apps/users/serializers/user_serializers.py @@ -36,6 +36,23 @@ from users.models.user import User, password_encrypt, get_user_dynamics_permissi user_cache = cache.caches['user_cache'] +class SystemSerializer(ApiMixin, serializers.Serializer): + @staticmethod + def get_profile(): + version = os.environ.get('MAXKB_VERSION') + return {'version': version} + + @staticmethod + def get_response_body_api(): + return openapi.Schema( + type=openapi.TYPE_OBJECT, + required=[], + properties={ + 'version': openapi.Schema(type=openapi.TYPE_STRING, title="系统版本号", description="系统版本号"), + } + ) + + class LoginSerializer(ApiMixin, serializers.Serializer): username = serializers.CharField(required=True, error_messages=ErrMessage.char("用户名")) diff --git a/apps/users/urls.py b/apps/users/urls.py index 8c8ce3106..55388d894 100644 --- a/apps/users/urls.py +++ b/apps/users/urls.py @@ -4,6 +4,7 @@ from . import views app_name = "user" urlpatterns = [ + path('profile', views.Profile.as_view()), path('user', views.User.as_view(), name="profile"), path('user/list', views.User.Query.as_view()), path('user/login', views.Login.as_view(), name='login'), diff --git a/apps/users/views/user.py b/apps/users/views/user.py index 666bb59a0..a6fa856f1 100644 --- a/apps/users/views/user.py +++ b/apps/users/views/user.py @@ -22,12 +22,22 @@ from common.response import result from smartdoc.settings import JWT_AUTH from users.serializers.user_serializers import RegisterSerializer, LoginSerializer, CheckCodeSerializer, \ RePasswordSerializer, \ - SendEmailSerializer, UserProfile, UserSerializer, UserManageSerializer, UserInstanceSerializer + SendEmailSerializer, UserProfile, UserSerializer, UserManageSerializer, UserInstanceSerializer, SystemSerializer user_cache = cache.caches['user_cache'] token_cache = cache.caches['token_cache'] +class Profile(APIView): + @action(methods=['GET'], detail=False) + @swagger_auto_schema(operation_summary="获取MaxKB相关信息", + operation_id="获取MaxKB相关信息", + responses=result.get_api_response(SystemSerializer.get_response_body_api()), + tags=['系统参数']) + def get(self, request: Request): + return result.success(SystemSerializer.get_profile()) + + class User(APIView): authentication_classes = [TokenAuth]