diff --git a/apps/application/api/application_api_key.py b/apps/application/api/application_api_key.py index 9c766bc82d3..4243aae6829 100644 --- a/apps/application/api/application_api_key.py +++ b/apps/application/api/application_api_key.py @@ -1,7 +1,7 @@ from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import OpenApiParameter -from application.serializers.application_access_token import ApiKeyEnableEditSerializer +from application.serializers.application_access_token import ApiKeyEnableSerializer from application.serializers.application_api_key import EditApplicationKeySerializer, ApplicationKeySerializerModel from common.mixins.api_mixin import APIMixin from common.result import ResultSerializer @@ -19,7 +19,7 @@ def get_data(self): class ApiKeyEnableResult(ResultSerializer): def get_data(self): - return ApiKeyEnableEditSerializer() + return ApiKeyEnableSerializer() class ApplicationKeyAPI(APIMixin): @@ -72,20 +72,11 @@ def get_request(): class Enable(APIMixin): @staticmethod def get_parameters(): - return [ - *ApplicationKeyAPI.get_parameters(), - OpenApiParameter( - name="enable_api_key", - description="是否启用 api key 访问应用", - type=OpenApiTypes.BOOL, - location="query", - required=True, - ), - ] + return [] @staticmethod def get_request(): - return None + return ApiKeyEnableSerializer @staticmethod def get_response(): diff --git a/apps/application/serializers/application_access_token.py b/apps/application/serializers/application_access_token.py index 6f7e03ea2ae..b635a04999a 100644 --- a/apps/application/serializers/application_access_token.py +++ b/apps/application/serializers/application_access_token.py @@ -136,14 +136,10 @@ def one(self, with_valid=True): } -class ApiKeyEnableEditSerializer(serializers.Serializer): - application_id = serializers.UUIDField(required=True, label=_("Application ID")) - enable_api_key = serializers.BooleanField(required=True, label=_("Enable API key")) - - class ApiKeyEnableSerializer(serializers.Serializer): workspace_id = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("Workspace ID")) application_id = serializers.UUIDField(required=True, label=_("Application ID")) + enable_api_key = serializers.BooleanField(required=True, label=_("Enable API key")) def is_valid(self, *, raise_exception=False): super().is_valid(raise_exception=True) @@ -154,12 +150,8 @@ def is_valid(self, *, raise_exception=False): if not query_set.exists(): raise AppApiException(500, _("Application id does not exist")) - def edit(self, instance): + def edit(self): self.is_valid(raise_exception=True) - enable_api_key_serializer = ApiKeyEnableEditSerializer( - data={**instance, "application_id": self.data.get("application_id")} - ) - enable_api_key_serializer.is_valid(raise_exception=True) application_access_token = ( QuerySet(ApplicationAccessToken).filter(application_id=self.data.get("application_id")).first() ) @@ -169,9 +161,10 @@ def edit(self, instance): access_token=hashlib.md5(str(uuid.uuid7()).encode()).hexdigest()[8:24], is_active=True, ) - application_access_token.enable_api_key = enable_api_key_serializer.validated_data.get("enable_api_key") + application_access_token.enable_api_key = self.validated_data.get("enable_api_key") application_access_token.save() return { + "workspace_id": self.validated_data.get("workspace_id"), "application_id": application_access_token.application_id, "enable_api_key": application_access_token.enable_api_key, } diff --git a/apps/application/views/application_api_key.py b/apps/application/views/application_api_key.py index ed0f858c30f..f614e287619 100644 --- a/apps/application/views/application_api_key.py +++ b/apps/application/views/application_api_key.py @@ -169,7 +169,7 @@ class ApplicationApiKeyEnable(APIView): summary=_("Enable or disable application API key access"), operation_id=_("Enable or disable application API key access"), # type: ignore parameters=ApplicationKeyAPI.Enable.get_parameters(), - request=None, + request=ApplicationKeyAPI.Enable.get_request(), responses=ApplicationKeyAPI.Enable.get_response(), tags=[_("Application Api Key")], # type: ignore ) @@ -190,7 +190,7 @@ class ApplicationApiKeyEnable(APIView): ) def put(self, request: Request, workspace_id: str, application_id: str): return result.success( - ApiKeyEnableSerializer(data={"workspace_id": workspace_id, "application_id": application_id}).edit( - request.query_params.dict() - ) + ApiKeyEnableSerializer( + data={**request.data, "workspace_id": workspace_id, "application_id": application_id} + ).edit() )