123 lines
4.9 KiB
Python
123 lines
4.9 KiB
Python
|
|
from apps.project.models import Problem
|
|||
|
|
from ninja import Field, Schema, ModelSchema
|
|||
|
|
from typing import List, Optional
|
|||
|
|
|
|||
|
|
# 删除schema
|
|||
|
|
class DeleteSchema(Schema):
|
|||
|
|
ids: List[int]
|
|||
|
|
|
|||
|
|
# 问题单-输出schema
|
|||
|
|
class ProblemModelOutSchema(ModelSchema):
|
|||
|
|
related: Optional[bool] = Field(False) # 给前端反应是否为关联的问题单
|
|||
|
|
hang: bool = Field(False) # 给前端反应是否是悬挂状态(即没有关联case)
|
|||
|
|
|
|||
|
|
class Config:
|
|||
|
|
model = Problem
|
|||
|
|
model_exclude = ['case', 'remark', 'sort']
|
|||
|
|
|
|||
|
|
# 查询问题单
|
|||
|
|
class ProblemFilterSchema(Schema):
|
|||
|
|
project_id: int = Field(None, alias='projectId')
|
|||
|
|
round_id: str = Field(None, alias='round')
|
|||
|
|
dut_id: str = Field(None, alias='dut')
|
|||
|
|
design_id: str = Field(None, alias='designDemand')
|
|||
|
|
test_id: str = Field(None, alias='testDemand')
|
|||
|
|
case_id: str = Field(None, alias='case')
|
|||
|
|
key: str = Field(None, alias='key')
|
|||
|
|
# 其他字段
|
|||
|
|
ident: str = Field(None, alias='ident')
|
|||
|
|
name: str = Field(None, alias='name')
|
|||
|
|
status: str = Field(None, alias='status')
|
|||
|
|
type: str = Field(None, alias='type')
|
|||
|
|
grade: str = Field(None, alias='grade')
|
|||
|
|
operation: str = Field(None, alias='operation')
|
|||
|
|
postPerson: str = Field(None, alias='postPerson')
|
|||
|
|
|
|||
|
|
class ProblemFilterWithHangSchema(ProblemFilterSchema):
|
|||
|
|
# 搜索增加hang字段
|
|||
|
|
hang: str = Field('3', alias='hang')
|
|||
|
|
|
|||
|
|
# 处理树状结构的schema
|
|||
|
|
class ProblemTreeReturnSchema(Schema):
|
|||
|
|
title: str = Field(..., alias='title')
|
|||
|
|
key: str = Field(..., alias='key')
|
|||
|
|
level: str = Field(..., alias='level')
|
|||
|
|
isLeaf: bool = Field(..., alias='isLeaf')
|
|||
|
|
|
|||
|
|
class ProblemTreeInputSchema(Schema):
|
|||
|
|
# 注意这里有alias
|
|||
|
|
project_id: int = Field(None, alias='projectId')
|
|||
|
|
key: str = Field(None, alias='key')
|
|||
|
|
level: str = Field(None, alias='level')
|
|||
|
|
isLeaf: bool = Field(None, alias='isLeaf')
|
|||
|
|
|
|||
|
|
# 增加问题单
|
|||
|
|
class ProblemCreateOutSchema(ModelSchema):
|
|||
|
|
class Config:
|
|||
|
|
model = Problem
|
|||
|
|
model_exclude = ['remark', 'sort', 'case']
|
|||
|
|
|
|||
|
|
# 更新,新增schema
|
|||
|
|
class ProblemCreateInputSchema(Schema):
|
|||
|
|
project_id: int = Field(..., alias="projectId")
|
|||
|
|
round_key: str = Field(None, alias="round")
|
|||
|
|
dut_key: str = Field(None, alias="dut")
|
|||
|
|
design_key: str = Field(None, alias="designDemand")
|
|||
|
|
test_key: str = Field(None, alias="testDemand")
|
|||
|
|
case_key: str = Field(None, alias="case")
|
|||
|
|
# 其他字段
|
|||
|
|
ident: str = Field(None, alias='ident')
|
|||
|
|
name: str = Field(None, alias='name')
|
|||
|
|
grade: str = Field(None, alias='grade')
|
|||
|
|
operation: str = Field("", alias='operation') # !重要:由于保存到数据库为null,则查询空字符串无法查询出来
|
|||
|
|
result: str = Field("", alias='result') # 问题影响
|
|||
|
|
status: str = Field(None, alias='status')
|
|||
|
|
type: str = Field(None, alias='type')
|
|||
|
|
postPerson: str = Field(None, alias='postPerson')
|
|||
|
|
postDate: str = Field(None, alias='postDate')
|
|||
|
|
designerPerson: str = Field("", alias='designerPerson')
|
|||
|
|
designDate: str = Field(None, alias='designDate')
|
|||
|
|
verifyPerson: str = Field("", alias='verifyPerson')
|
|||
|
|
verifyDate: str = Field(None, alias='verifyDate')
|
|||
|
|
closeMethod: List[str]
|
|||
|
|
# 2024年3月27日新增-处理方式字段
|
|||
|
|
solve: Optional[str] = ""
|
|||
|
|
# 2024年5月13日新增
|
|||
|
|
analysis: str = Field("", alias='analysis')
|
|||
|
|
effect_scope: str = Field("", alias='effect_scope')
|
|||
|
|
verify_result: str = Field("", alias='verify_result')
|
|||
|
|
|
|||
|
|
# 不带round_key、dut_key、design_key、test_key、case_key的更新Schema
|
|||
|
|
class ProblemUpdateInputSchema(Schema):
|
|||
|
|
project_id: int = Field(..., alias="projectId")
|
|||
|
|
# 其他字段
|
|||
|
|
ident: str = Field(None, alias='ident')
|
|||
|
|
name: str = Field(None, alias='name')
|
|||
|
|
grade: str = Field(None, alias='grade')
|
|||
|
|
operation: str = Field(None, alias='operation')
|
|||
|
|
result: str = Field(None, alias='result')
|
|||
|
|
status: str = Field(None, alias='status')
|
|||
|
|
type: str = Field(None, alias='type')
|
|||
|
|
postPerson: str = Field(None, alias='postPerson')
|
|||
|
|
postDate: str = Field(None, alias='postDate')
|
|||
|
|
designerPerson: str = Field(None, alias='designerPerson')
|
|||
|
|
designDate: str = Field(None, alias='designDate')
|
|||
|
|
verifyPerson: str = Field(None, alias='verifyPerson')
|
|||
|
|
verifyDate: str = Field(None, alias='verifyDate')
|
|||
|
|
closeMethod: List[str]
|
|||
|
|
# 5月13日新增字段
|
|||
|
|
analysis: str = Field(None, alias='analysis')
|
|||
|
|
effect_scope: str = Field(None, alias='effect_scope')
|
|||
|
|
verify_result: str = Field(None, alias='verify_result')
|
|||
|
|
# 更新字段
|
|||
|
|
solve: Optional[str] = None
|
|||
|
|
|
|||
|
|
class ProblemSingleInputSchema(Schema):
|
|||
|
|
project_id: int = Field(..., alias="projectId")
|
|||
|
|
round_id: str = Field(..., alias="round")
|
|||
|
|
dut_id: str = Field(..., alias="dut")
|
|||
|
|
design_id: str = Field(..., alias="designDemand")
|
|||
|
|
test_id: str = Field(..., alias="testDemand")
|
|||
|
|
case_id: str = Field(..., alias="case")
|
|||
|
|
problem_id: str = Field(..., alias="problem")
|