diff --git a/apps/chat/serializers/chat_user_api_key_serializers.py b/apps/chat/serializers/chat_user_api_key_serializers.py index a22153428f0..4fac6446efd 100644 --- a/apps/chat/serializers/chat_user_api_key_serializers.py +++ b/apps/chat/serializers/chat_user_api_key_serializers.py @@ -34,28 +34,3 @@ def generate(self, with_valid=True): ) api_key.save() return ChatUserApiKeyModelSerializer(api_key).data - - def page(self, current_page: int, page_size: int, with_valid=True): - if with_valid: - self.is_valid(raise_exception=True) - user_id = self.data.get("user_id") - query_set = QuerySet(ChatUserApiKey).filter(user_id=user_id) - order_by = ( - "-create_time" - if self.data.get("order_by") is None or self.data.get("order_by") == "" - else self.data.get("order_by") - ) - query_set = query_set.order_by(order_by) - return page_search( - current_page, page_size, query_set, post_records_handler=lambda u: ChatUserApiKeyModelSerializer(u).data - ) - - class Operate(serializers.Serializer): - id = serializers.UUIDField(required=True, label=_("api key id")) - user_id = serializers.UUIDField(required=True, label=_("user id")) - - def destroy(self, with_valid=True): - if with_valid: - self.is_valid(raise_exception=True) - QuerySet(ChatUserApiKey).filter(id=self.data.get("id"), user_id=self.data.get("user_id")).delete() - return True diff --git a/apps/chat/urls.py b/apps/chat/urls.py index 7c0b81d5738..70b2272a3be 100644 --- a/apps/chat/urls.py +++ b/apps/chat/urls.py @@ -42,8 +42,6 @@ path('chat_user/profile', v3_views.ChatUserProfileView.as_view(), name='v3_chat_user_profile'), path('chat_user/current/reset_password', v3_views.ResetCurrentUserPasswordView.as_view(), name='v3_reset_password_current'), path('api_key', v3_views.ChatUserApiKeyView.as_view()), - path('api_key//', v3_views.ChatUserApiKeyView.Page.as_view()), - path('api_key/', v3_views.ChatUserApiKeyView.Operate.as_view()), path('portal/application//', v3_views.PortalApplicationView.as_view(), name='v3_portal_application'), path('portal/chat//', v3_views.PortalHistoricalConversationView.as_view(), name='v3_portal_historical_conversation'), path('portal/chat///', v3_views.PortalConversationQueryView.as_view(), name='v3_portal_conversation_query'), diff --git a/apps/chat/views/v3/chat_user_api_key.py b/apps/chat/views/v3/chat_user_api_key.py index 6be48db3dc9..0c5de342af1 100644 --- a/apps/chat/views/v3/chat_user_api_key.py +++ b/apps/chat/views/v3/chat_user_api_key.py @@ -1,14 +1,15 @@ +from django.db.models import QuerySet +from django.utils.translation import gettext_lazy as _ + from common.auth import ChatTokenAuth from common.log.log import log from common.result import result -from django.utils.translation import gettext_lazy as _ from drf_spectacular.utils import extend_schema from rest_framework.request import Request from rest_framework.views import APIView -from drf_spectacular.types import OpenApiTypes -from drf_spectacular.utils import OpenApiParameter -from chat.serializers.chat_user_api_key_serializers import ChatUserApiKeySerializer +from chat.serializers.chat_user_api_key_serializers import ChatUserApiKeyModelSerializer, ChatUserApiKeySerializer +from system_manage.models import ChatUserApiKey class ChatUserApiKeyView(APIView): @@ -26,44 +27,19 @@ class ChatUserApiKeyView(APIView): def post(self, request: Request): return result.success(ChatUserApiKeySerializer(data={"user_id": request.user.id}).generate()) - class Page(APIView): - authentication_classes = [ChatTokenAuth] - - @extend_schema( - methods=["GET"], - description=_("Get ChatUserAPIKey List"), - summary=_("Get ChatUserAPIKey List"), - operation_id="V3 Get ChatUserAPIKey List", - parameters=[ - OpenApiParameter(name='order_by', type=OpenApiTypes.STR, location=OpenApiParameter.QUERY, - description=_('order by'), required=False), - ], - responses=None, - tags=[_("V3 Chat User API Key")], # type: ignore - ) - def get(self, request: Request, current_page, page_size): - return result.success( - ChatUserApiKeySerializer( - data={"user_id": request.user.id, "order_by": request.query_params.get("order_by")} - ).page(current_page, page_size) - ) - - class Operate(APIView): - authentication_classes = [ChatTokenAuth] - - @extend_schema( - methods=["DELETE"], - description=_("Delete ChatUserAPIKey"), - summary=_("Delete ChatUserAPIKey"), - operation_id="V3 Delete ChatUserAPIKey", - responses=None, - parameters=None, - tags=[_("V3 Chat User API Key")], # type: ignore - ) - @log(menu="Chat User API Key", operate="Delete chat user API key") - def delete(self, request: Request, api_key_id: str): - return result.success( - ChatUserApiKeySerializer.Operate( - data={"id": api_key_id, "user_id": request.user.id} - ).destroy() - ) + @extend_schema( + methods=["GET"], + description=_("Get ChatUserAPIKey"), + summary=_("Get ChatUserAPIKey"), + operation_id="V3 Get ChatUserAPIKey", + responses=None, + tags=[_("V3 Chat User API Key")], # type: ignore + ) + @log(menu="Chat User API Key", operate="Get chat user API key") + def get(self, request: Request): + user_id = request.user.id + api_key = QuerySet(ChatUserApiKey).filter(user_id=user_id).first() + if api_key is None: + # 用户还没有 API Key,直接调用生成逻辑 + return result.success(ChatUserApiKeySerializer(data={"user_id": user_id}).generate()) + return result.success(ChatUserApiKeyModelSerializer(api_key).data)