provide.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. # coding=utf-8
  2. from drf_spectacular.types import OpenApiTypes
  3. from drf_spectacular.utils import OpenApiParameter
  4. from common.mixins.api_mixin import APIMixin
  5. from common.result import ResultSerializer
  6. from rest_framework import serializers
  7. from django.utils.translation import gettext_lazy as _
  8. class ProvideResponse(ResultSerializer):
  9. def get_data(self):
  10. return ProvideSerializer()
  11. class ProvideSerializer(serializers.Serializer):
  12. name = serializers.CharField(required=True, max_length=64, label=_("model name"))
  13. provider = serializers.CharField(required=True, label=_("provider"))
  14. icon = serializers.CharField(required=True, label=_("icon"))
  15. class ProvideListSerializer(serializers.Serializer):
  16. key = serializers.CharField(required=True, max_length=64, label=_("model name"))
  17. value = serializers.CharField(required=True, label=_("value"))
  18. class ModelListSerializer(serializers.Serializer):
  19. name = serializers.CharField(required=True, label=_("model name"))
  20. model_type = serializers.CharField(required=True, label=_("model type"))
  21. desc = serializers.CharField(required=True, label=_("model name"))
  22. class ModelParamsFormSerializer(serializers.Serializer):
  23. input_type = serializers.CharField(required=False, label=_("input type"))
  24. label = serializers.CharField(required=False, label=_("label"))
  25. text_field = serializers.CharField(required=False, label=_("text field"))
  26. value_field = serializers.CharField(required=False, label=_("value field"))
  27. provider = serializers.CharField(required=False, label=_("provider"))
  28. method = serializers.CharField(required=False, label=_("method"))
  29. required = serializers.BooleanField(required=False, label=_("required"))
  30. default_value = serializers.CharField(required=False, label=_("default value"))
  31. relation_show_field_dict = serializers.DictField(required=False, label=_("relation show field dict"))
  32. relation_trigger_field_dict = serializers.DictField(required=False, label=_("relation trigger field dict"))
  33. trigger_type = serializers.CharField(required=False, label=_("trigger type"))
  34. attrs = serializers.DictField(required=False, label=_("attrs"))
  35. props_info = serializers.DictField(required=False, label=_("props info"))
  36. class ModelParamsFormResponse(ResultSerializer):
  37. def get_data(self):
  38. return ModelParamsFormSerializer(many=True)
  39. class ModelListResponse(ResultSerializer):
  40. def get_data(self):
  41. return ModelListSerializer(many=True)
  42. class ProvideListResponse(ResultSerializer):
  43. def get_data(self):
  44. return ProvideListSerializer(many=True)
  45. class ProvideApi(APIMixin):
  46. class ModelParamsForm(APIMixin):
  47. @staticmethod
  48. def get_query_params_api():
  49. return [OpenApiParameter(
  50. name="model_type",
  51. description=_("model type"),
  52. type=OpenApiTypes.STR,
  53. location=OpenApiParameter.QUERY,
  54. required=True,
  55. ), OpenApiParameter(
  56. name="provider",
  57. description=_("provider"),
  58. type=OpenApiTypes.STR,
  59. location=OpenApiParameter.QUERY,
  60. required=True,
  61. ), OpenApiParameter(
  62. name="model_name",
  63. description=_("model name"),
  64. type=OpenApiTypes.STR,
  65. location=OpenApiParameter.QUERY,
  66. required=True,
  67. )
  68. ]
  69. @staticmethod
  70. def get_response():
  71. return ModelParamsFormResponse
  72. class ModelList(APIMixin):
  73. @staticmethod
  74. def get_query_params_api():
  75. return [OpenApiParameter(
  76. name="model_type",
  77. description=_("model type"),
  78. type=OpenApiTypes.STR,
  79. location=OpenApiParameter.QUERY,
  80. required=True,
  81. ), OpenApiParameter(
  82. name="provider",
  83. description=_("provider"),
  84. type=OpenApiTypes.STR,
  85. location=OpenApiParameter.QUERY,
  86. required=True,
  87. )
  88. ]
  89. @staticmethod
  90. def get_response():
  91. return ModelListResponse
  92. @staticmethod
  93. def get_response():
  94. return ProvideResponse
  95. class ModelTypeList(APIMixin):
  96. @staticmethod
  97. def get_query_params_api():
  98. return [OpenApiParameter(
  99. # 参数的名称是done
  100. name="provider",
  101. # 对参数的备注
  102. description=_("provider"),
  103. # 指定参数的类型
  104. type=OpenApiTypes.STR,
  105. location=OpenApiParameter.QUERY,
  106. # 指定必须给
  107. required=True,
  108. )]
  109. @staticmethod
  110. def get_response():
  111. return ProvideListResponse