# coding=utf-8 """ 平台API Key管理视图 提供API Key的CRUD操作 """ from rest_framework.views import APIView from django.utils.translation import gettext_lazy as _ from common.auth import TokenAuth from common.log.log import log from common.result import result from models_provider.services import platform_api_key_service class ApiKeyView(APIView): """平台API Key管理""" authentication_classes = [TokenAuth] def get(self, request): """获取用户的API Key列表""" keys = platform_api_key_service.get_user_api_keys(request.user) data = [] for k in keys: data.append({ "id": str(k.id), "api_key_prefix": k.api_key_prefix, "name": k.name or "未命名", "status": k.status, "last_used_at": k.last_used_at, "create_time": k.create_time, }) return result.success(data) @log(menu='api_key', operate='Create API Key', get_operation_object=lambda r, k: {'name': r.data.get('name', '未命名')}) def post(self, request): """创建API Key(完整密钥仅返回一次)""" name = request.data.get('name') try: key_data = platform_api_key_service.create_api_key(request.user, name=name) return result.success(key_data) except ValueError as e: return result.error(str(e)) class ApiKeyOperateView(APIView): """单个API Key操作""" authentication_classes = [TokenAuth] def put(self, request, key_id): """更新API Key状态""" status_val = request.data.get('status') try: platform_api_key_service.update_api_key_status(key_id, request.user, status_val) return result.success(None) except ValueError as e: return result.error(str(e)) def delete(self, request, key_id): """删除API Key""" try: platform_api_key_service.delete_api_key(key_id, request.user) return result.success(None) except ValueError as e: return result.error(str(e))