From 7efa68d01414027120f630c6373465ee9942ddc0 Mon Sep 17 00:00:00 2001
From: BigOrangeQWQ <2284086963@qq.com>
Date: Sun, 8 Sep 2024 23:43:44 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A8=A1=E5=9E=8B?=
=?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=AD=97=E6=AE=B5=E7=9A=84=E5=BA=8F=E5=88=97?=
=?UTF-8?q?=E5=8C=96=E4=B8=8E=E6=8A=A5=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/plugins/publish/templates/render_error.md.jinja | 2 +-
src/utils/validation/models.py | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/plugins/publish/templates/render_error.md.jinja b/src/plugins/publish/templates/render_error.md.jinja
index 581572d4..0c4f6433 100644
--- a/src/plugins/publish/templates/render_error.md.jinja
+++ b/src/plugins/publish/templates/render_error.md.jinja
@@ -40,7 +40,7 @@
{{ error.msg }}
请确保没有重复发布。
{% elif type == "plugin.test" %}
插件加载测试未通过。{{ detail_message("测试输出", ctx.output) }}
-{% elif type == "metadata" %}
+{% elif type == "plugin.metadata" %}
无法获取到插件元数据。{{ "请填写插件元数据" if ctx.plugin_test_result else "请确保插件正常加载" }}。
{% elif type == "plugin.type" %}
插件类型 {{ input }} 不符合规范。请确保插件类型正确,当前仅支持 application 与 library。
diff --git a/src/utils/validation/models.py b/src/utils/validation/models.py
index 3d10f142..ff745db1 100644
--- a/src/utils/validation/models.py
+++ b/src/utils/validation/models.py
@@ -133,6 +133,8 @@ def collect_valid_values(
raise PydanticCustomError("validation_context", "未获取到验证上下文")
result = handler(v)
+ if isinstance(result, BaseModel):
+ result = result.model_dump()
context["valid_data"][info.field_name] = result
return result
@@ -168,7 +170,7 @@ class PluginPublishInfo(PublishInfo, PyPIMixin):
"""插件支持的适配器"""
load: bool
""""插件测试结果"""
- metadata: Metadata | None
+ metadata: Metadata
"""插件测试元数据"""
@field_validator("type", mode="before")
@@ -236,15 +238,13 @@ def plugin_test_load_validator(cls, v: bool, info: ValidationInfo) -> bool:
@field_validator("metadata", mode="before")
@classmethod
def plugin_test_metadata_validator(
- cls, v: Metadata | None, info: ValidationInfo
- ) -> Metadata | None:
+ cls, v: Metadata, info: ValidationInfo
+ ) -> Metadata:
context = info.context
if context is None:
raise PydanticCustomError("validation_context", "未获取到验证上下文")
if v is None:
raise PydanticCustomError("plugin.metadata", "插件缺少元数据")
- if context.get("skip_plugin_test"):
- return None
return v