refactor(api): Extract shared ResponseModel (#34633)

This commit is contained in:
corevibe555 2026-04-07 16:05:38 +03:00 committed by GitHub
parent 89ce61cfea
commit c2af415450
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 30 additions and 76 deletions

View File

@ -7,7 +7,7 @@ from flask import request
from flask_restx import Resource
from graphon.enums import WorkflowExecutionStatus
from graphon.file import helpers as file_helpers
from pydantic import AliasChoices, BaseModel, ConfigDict, Field, computed_field, field_validator
from pydantic import AliasChoices, BaseModel, Field, computed_field, field_validator
from sqlalchemy import select
from sqlalchemy.orm import sessionmaker
from werkzeug.exceptions import BadRequest
@ -29,6 +29,7 @@ from core.ops.ops_trace_manager import OpsTraceManager
from core.rag.retrieval.retrieval_methods import RetrievalMethod
from core.trigger.constants import TRIGGER_NODE_TYPES
from extensions.ext_database import db
from fields.base import ResponseModel
from libs.login import current_account_with_tenant, login_required
from models import App, DatasetPermissionEnum, Workflow
from models.model import IconType
@ -155,16 +156,6 @@ class AppTracePayload(BaseModel):
type JSONValue = Any
class ResponseModel(BaseModel):
model_config = ConfigDict(
from_attributes=True,
extra="ignore",
populate_by_name=True,
serialize_by_alias=True,
protected_namespaces=(),
)
def _to_timestamp(value: datetime | int | None) -> int | None:
if isinstance(value, datetime):
return int(value.timestamp())

View File

@ -2,7 +2,9 @@ from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field, field_validator
from pydantic import Field, field_validator
from fields.base import ResponseModel
def _to_timestamp(value: datetime | int | None) -> int | None:
@ -11,16 +13,6 @@ def _to_timestamp(value: datetime | int | None) -> int | None:
return value
class ResponseModel(BaseModel):
model_config = ConfigDict(
from_attributes=True,
extra="ignore",
populate_by_name=True,
serialize_by_alias=True,
protected_namespaces=(),
)
class Annotation(ResponseModel):
id: str
question: str | None = None

13
api/fields/base.py Normal file
View File

@ -0,0 +1,13 @@
from __future__ import annotations
from pydantic import BaseModel, ConfigDict
class ResponseModel(BaseModel):
model_config = ConfigDict(
from_attributes=True,
extra="ignore",
populate_by_name=True,
serialize_by_alias=True,
protected_namespaces=(),
)

View File

@ -4,21 +4,13 @@ from datetime import datetime
from typing import Any
from graphon.file import File
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
from pydantic import Field, field_validator, model_validator
from fields.base import ResponseModel
type JSONValue = Any
class ResponseModel(BaseModel):
model_config = ConfigDict(
from_attributes=True,
extra="ignore",
populate_by_name=True,
serialize_by_alias=True,
protected_namespaces=(),
)
class MessageFile(ResponseModel):
id: str
filename: str

View File

@ -3,7 +3,9 @@ from __future__ import annotations
from datetime import datetime
from flask_restx import fields
from pydantic import BaseModel, ConfigDict, Field
from pydantic import Field
from fields.base import ResponseModel
simple_end_user_fields = {
"id": fields.String,
@ -26,16 +28,6 @@ end_user_detail_fields = {
}
class ResponseModel(BaseModel):
model_config = ConfigDict(
from_attributes=True,
extra="ignore",
populate_by_name=True,
serialize_by_alias=True,
protected_namespaces=(),
)
class SimpleEndUser(ResponseModel):
id: str
type: str

View File

@ -2,17 +2,9 @@ from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, ConfigDict, field_validator
from pydantic import field_validator
class ResponseModel(BaseModel):
model_config = ConfigDict(
from_attributes=True,
extra="ignore",
populate_by_name=True,
serialize_by_alias=True,
protected_namespaces=(),
)
from fields.base import ResponseModel
def _to_timestamp(value: datetime | int | None) -> int | None:

View File

@ -4,7 +4,9 @@ from datetime import datetime
from flask_restx import fields
from graphon.file import helpers as file_helpers
from pydantic import BaseModel, ConfigDict, computed_field, field_validator
from pydantic import computed_field, field_validator
from fields.base import ResponseModel
simple_account_fields = {
"id": fields.String,
@ -27,16 +29,6 @@ def _build_avatar_url(avatar: str | None) -> str | None:
return file_helpers.get_signed_file_url(avatar)
class ResponseModel(BaseModel):
model_config = ConfigDict(
from_attributes=True,
extra="ignore",
populate_by_name=True,
serialize_by_alias=True,
protected_namespaces=(),
)
class SimpleAccount(ResponseModel):
id: str
name: str

View File

@ -1,16 +1,6 @@
from __future__ import annotations
from pydantic import BaseModel, ConfigDict
class ResponseModel(BaseModel):
model_config = ConfigDict(
from_attributes=True,
extra="ignore",
populate_by_name=True,
serialize_by_alias=True,
protected_namespaces=(),
)
from fields.base import ResponseModel
class DataSetTag(ResponseModel):