39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
from pydantic import BaseModel, field_validator
|
|
from datetime import date
|
|
from dateutil import parser
|
|
|
|
class DataValid(BaseModel):
|
|
id: int
|
|
organ: str
|
|
names: str
|
|
date_from: date
|
|
date_to: date | None
|
|
ver: str
|
|
|
|
# Дополнительный конструктор для списка
|
|
@classmethod
|
|
def from_list(cls, data_list: list):
|
|
return cls(
|
|
id=data_list[0],
|
|
organ=data_list[1],
|
|
names=data_list[2],
|
|
date_from=data_list[3],
|
|
date_to=data_list[4],
|
|
ver=data_list[5]
|
|
)
|
|
|
|
@field_validator('date_from', mode='before')
|
|
def parse_date_to(cls, date):
|
|
if isinstance(date, str):
|
|
try:
|
|
return parser.parse(date)
|
|
except (ValueError, TypeError): return date
|
|
return date
|
|
|
|
@field_validator('date_to', mode='before')
|
|
def parse_date_from(date):
|
|
if isinstance(date, str):
|
|
try:
|
|
return parser.parse(date)
|
|
except(ValueError, TypeError): return date
|
|
return date |