40 lines
1.7 KiB
Python
40 lines
1.7 KiB
Python
from pydantic import BaseModel, Field,field_validator
|
|
from typing import Optional
|
|
|
|
from ..common.base import BaseResponseWithID
|
|
from ..common.datetime import datetime_date,get_current_date
|
|
from fastapi import HTTPException
|
|
from ..common.validators import DateStr
|
|
|
|
class PostPreparation(BaseModel):
|
|
id:str = Field(..., description="里程碑ID")
|
|
code: str= Field(..., description="里程碑的节点编码")
|
|
acquire_date: DateStr|None = Field(None,description="取得时间")
|
|
is_exist: bool= Field(..., description="是否取得")
|
|
|
|
@field_validator('acquire_date')
|
|
def validate_acquire_date(cls, v: Optional[DateStr]) -> Optional[DateStr]:
|
|
if v is None:
|
|
return None
|
|
try:
|
|
actual = datetime_date(v)
|
|
except ValueError:
|
|
raise HTTPException(status_code=400,detail='日期格式为(YYYY-MM-DD)')
|
|
|
|
today = datetime_date(get_current_date())
|
|
if actual > today:
|
|
raise HTTPException(status_code=400,detail='取得时间不能晚于今天')
|
|
return v
|
|
|
|
|
|
class PreparationDetail(BaseResponseWithID):
|
|
id: Optional[str] = Field(None, description="里程碑ID")
|
|
project_id: Optional[str] = Field(None, description="项目ID")
|
|
code: Optional[str] = Field(None, description="里程碑节点编码")
|
|
acquire_date: Optional[DateStr] = Field(None, description="取得时间")
|
|
is_exist: Optional[bool] = Field(None, description="是否取得")
|
|
# approval_status: Optional[str] = Field(None, description="审批状态")
|
|
name: Optional[str] = Field(None, description="里程碑名称")
|
|
group: Optional[str] = Field(None, description="分组条件", examples=['KGTJLS'])
|
|
# is_acquired: Optional[int] = Field(0, description="是否取得")
|