MaxKB/apps/models_provider/api/provide.py
wxg0103 3c5b38dc44
Some checks are pending
sync2gitee / repo-sync (push) Waiting to run
refactor: list
2025-05-20 17:14:12 +08:00

137 lines
4.8 KiB
Python

# coding=utf-8
from drf_spectacular.types import OpenApiTypes
from drf_spectacular.utils import OpenApiParameter
from common.mixins.api_mixin import APIMixin
from common.result import ResultSerializer
from rest_framework import serializers
from django.utils.translation import gettext_lazy as _
class ProvideResponse(ResultSerializer):
def get_data(self):
return ProvideSerializer()
class ProvideSerializer(serializers.Serializer):
name = serializers.CharField(required=True, max_length=64, label=_("model name"))
provider = serializers.CharField(required=True, label=_("provider"))
icon = serializers.CharField(required=True, label=_("icon"))
class ProvideListSerializer(serializers.Serializer):
key = serializers.CharField(required=True, max_length=64, label=_("model name"))
value = serializers.CharField(required=True, label=_("value"))
class ModelListSerializer(serializers.Serializer):
name = serializers.CharField(required=True, label=_("model name"))
model_type = serializers.CharField(required=True, label=_("model type"))
desc = serializers.CharField(required=True, label=_("model name"))
class ModelParamsFormSerializer(serializers.Serializer):
input_type = serializers.CharField(required=False, label=_("input type"))
label = serializers.CharField(required=False, label=_("label"))
text_field = serializers.CharField(required=False, label=_("text field"))
value_field = serializers.CharField(required=False, label=_("value field"))
provider = serializers.CharField(required=False, label=_("provider"))
method = serializers.CharField(required=False, label=_("method"))
required = serializers.BooleanField(required=False, label=_("required"))
default_value = serializers.CharField(required=False, label=_("default value"))
relation_show_field_dict = serializers.DictField(required=False, label=_("relation show field dict"))
relation_trigger_field_dict = serializers.DictField(required=False, label=_("relation trigger field dict"))
trigger_type = serializers.CharField(required=False, label=_("trigger type"))
attrs = serializers.DictField(required=False, label=_("attrs"))
props_info = serializers.DictField(required=False, label=_("props info"))
class ModelParamsFormResponse(ResultSerializer):
def get_data(self):
return ModelParamsFormSerializer(many=True)
class ModelListResponse(ResultSerializer):
def get_data(self):
return ModelListSerializer(many=True)
class ProvideListResponse(ResultSerializer):
def get_data(self):
return ProvideListSerializer(many=True)
class ProvideApi(APIMixin):
class ModelParamsForm(APIMixin):
@staticmethod
def get_query_params_api():
return [OpenApiParameter(
name="model_type",
description=_("model type"),
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
required=True,
), OpenApiParameter(
name="provider",
description=_("provider"),
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
required=True,
), OpenApiParameter(
name="model_name",
description=_("model name"),
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
required=True,
)
]
@staticmethod
def get_response():
return ModelParamsFormResponse
class ModelList(APIMixin):
@staticmethod
def get_query_params_api():
return [OpenApiParameter(
name="model_type",
description=_("model type"),
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
required=True,
), OpenApiParameter(
name="provider",
description=_("provider"),
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
required=True,
)
]
@staticmethod
def get_response():
return ModelListResponse
@staticmethod
def get_response():
return ProvideResponse
class ModelTypeList(APIMixin):
@staticmethod
def get_query_params_api():
return [OpenApiParameter(
# 参数的名称是done
name="provider",
# 对参数的备注
description=_("provider"),
# 指定参数的类型
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
# 指定必须给
required=True,
)]
@staticmethod
def get_response():
return ProvideListResponse