Skip to content

Commit

Permalink
fix: 修复 ValidationDict data 字段序列化问题
Browse files Browse the repository at this point in the history
  • Loading branch information
BigOrangeQWQ committed Sep 9, 2024
1 parent ffa659b commit 68464b0
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 16 deletions.
8 changes: 2 additions & 6 deletions src/utils/validation/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from re import Pattern
from typing import Any
from nonebot import logger
from pydantic import TypeAdapter, ValidationError
from pydantic import ValidationError
from pydantic_core import ErrorDetails

from .models import (
Expand Down Expand Up @@ -67,17 +66,14 @@ def validate_info(
except ValidationError as exc:
errors = exc.errors()
data: dict[str, Any] = validation_context["valid_data"]
logger.info(data)
# 翻译错误
errors = translate_errors(errors)

validation_data = ValidationDict(
return ValidationDict(
valid=not errors,
data=data,
errors=errors, # 方便插件使用的数据
type=publish_type,
name=data.get("name") or raw_data.get("name", ""),
author=data.get("author", ""),
)
logger.info(validation_data)
return validation_data
13 changes: 3 additions & 10 deletions src/utils/validation/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
field_validator,
model_validator,
)
from pydantic_core import PydanticCustomError
from pydantic_core import PydanticCustomError, to_jsonable_python
from src.utils.store_test.models import Metadata, Tag

from .constants import (
Expand Down Expand Up @@ -56,16 +56,9 @@ class ValidationDict(BaseModel):
@classmethod
def data_validator(cls, v: dict[str, Any] | BaseModel) -> dict[str, Any]:
"""
保证 data 数据是一个字典,而非 Model 实例
序列化 data 字段
"""
if isinstance(v, BaseModel):
return v.model_dump()
elif isinstance(v, dict):
return {
key: value.model_dump() if isinstance(value, BaseModel) else value
for key, value in v.items()
}
return v
return to_jsonable_python(v)


class PyPIMixin(BaseModel):
Expand Down

0 comments on commit 68464b0

Please sign in to comment.