Files
+51
qiuqiuaGitHubQuantumGhost盐粒 YanliwangxiaoleiStephen Zhougemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>Cursxautofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>lif非法操作Asuka Minatofenglinqiaofenglin-LAN-TomoOkuyamaTomo Okuyamadependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>zyssyz123hj24Coding On StarCodingOnStaryyhXiangxuan QufghpdfcoopercoderzhaiguangpengJunyan QinE.GGlobalStar117Claude Haiku 4.5CodingOnStarcrazywoolaheysztNeatGuyCodingYeuolyzxhlyhmoonpandawarlocgaogithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>claude[bot] <41898282+claude[bot]@users.noreply.github.com>KVOJJJineuxbangjiehanFFXNJyongNie RonghuaJQSevenMiaojiasiqiSeokrin Taron SungCrabSAMACopilotyihongJoelWu TianweiyesseniaJaxniveshdandyanOSS ContributorniveshdandyanSean Kenneth Doherty
9ef6b90843 feat: sync main branch (#31938)
Signed-off-by: majiayu000 <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: NeatGuyCoding <[email protected]>
Signed-off-by: -LAN- <[email protected]>
Signed-off-by: yihong0618 <[email protected]>
Co-authored-by: QuantumGhost <[email protected]>
Co-authored-by: 盐粒 Yanli <[email protected]>
Co-authored-by: wangxiaolei <[email protected]>
Co-authored-by: Stephen Zhou <[email protected]>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Cursx <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: lif <[email protected]>
Co-authored-by: 非法操作 <[email protected]>
Co-authored-by: Asuka Minato <[email protected]>
Co-authored-by: fenglin <[email protected]>
Co-authored-by: qiaofenglin <[email protected]>
Co-authored-by: -LAN- <[email protected]>
Co-authored-by: TomoOkuyama <[email protected]>
Co-authored-by: Tomo Okuyama <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: zyssyz123 <[email protected]>
Co-authored-by: hj24 <[email protected]>
Co-authored-by: Coding On Star <[email protected]>
Co-authored-by: CodingOnStar <[email protected]>
Co-authored-by: yyh <[email protected]>
Co-authored-by: Xiangxuan Qu <[email protected]>
Co-authored-by: fghpdf <[email protected]>
Co-authored-by: coopercoder <[email protected]>
Co-authored-by: zhaiguangpeng <[email protected]>
Co-authored-by: Junyan Qin (Chin) <[email protected]>
Co-authored-by: E.G <[email protected]>
Co-authored-by: GlobalStar117 <[email protected]>
Co-authored-by: Claude Haiku 4.5 <[email protected]>
Co-authored-by: CodingOnStar <[email protected]>
Co-authored-by: crazywoola <[email protected]>
Co-authored-by: heyszt <[email protected]>
Co-authored-by: NeatGuyCoding <[email protected]>
Co-authored-by: Yeuoly <[email protected]>
Co-authored-by: zxhlyh <[email protected]>
Co-authored-by: moonpanda <[email protected]>
Co-authored-by: warlocgao <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: KVOJJJin <[email protected]>
Co-authored-by: eux <[email protected]>
Co-authored-by: bangjiehan <[email protected]>
Co-authored-by: FFXN <[email protected]>
Co-authored-by: Jyong <[email protected]>
Co-authored-by: Nie Ronghua <[email protected]>
Co-authored-by: JQSevenMiao <[email protected]>
Co-authored-by: jiasiqi <[email protected]>
Co-authored-by: Seokrin Taron Sung <[email protected]>
Co-authored-by: CrabSAMA <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: yihong <[email protected]>
Co-authored-by: Joel <[email protected]>
Co-authored-by: Wu Tianwei <[email protected]>
Co-authored-by: yessenia <[email protected]>
Co-authored-by: Jax <[email protected]>
Co-authored-by: niveshdandyan <[email protected]>
Co-authored-by: OSS Contributor <[email protected]>
Co-authored-by: niveshdandyan <[email protected]>
Co-authored-by: Sean Kenneth Doherty <[email protected]>
2026-02-04 19:04:24 +08:00

48 lines
1.4 KiB
Python

"""Helpers for registering Pydantic models with Flask-RESTX namespaces."""
from enum import StrEnum
from flask_restx import Namespace
from pydantic import BaseModel, TypeAdapter
from controllers.console import console_ns
DEFAULT_REF_TEMPLATE_SWAGGER_2_0 = "#/definitions/{model}"
def register_schema_model(namespace: Namespace, model: type[BaseModel]) -> None:
"""Register a single BaseModel with a namespace for Swagger documentation."""
namespace.schema_model(model.__name__, model.model_json_schema(ref_template=DEFAULT_REF_TEMPLATE_SWAGGER_2_0))
def register_schema_models(namespace: Namespace, *models: type[BaseModel]) -> None:
"""Register multiple BaseModels with a namespace."""
for model in models:
register_schema_model(namespace, model)
def get_or_create_model(model_name: str, field_def):
existing = console_ns.models.get(model_name)
if existing is None:
existing = console_ns.model(model_name, field_def)
return existing
def register_enum_models(namespace: Namespace, *models: type[StrEnum]) -> None:
"""Register multiple StrEnum with a namespace."""
for model in models:
namespace.schema_model(
model.__name__, TypeAdapter(model).json_schema(ref_template=DEFAULT_REF_TEMPLATE_SWAGGER_2_0)
)
__all__ = [
"DEFAULT_REF_TEMPLATE_SWAGGER_2_0",
"get_or_create_model",
"register_enum_models",
"register_schema_model",
"register_schema_models",
]