from datetime import datetime from pydantic import BaseModel, validator class Query(BaseModel): dt_from: str dt_upto: str group_type: str @validator('group_type', pre=True, always=True) def validate_group_type(cls, v): if v not in ['month', 'day', 'hour']: raise ValueError('Invalid group_type') return v @validator('dt_from', pre=True, always=True) def validate_dt_from(cls, v): try: datetime.strptime(v, '%Y-%m-%dT%H:%M:%S') except ValueError: raise ValueError('Invalid dt_from') return v @validator('dt_upto', pre=True, always=True) def validate_dt_upto(cls, v, values): try: datetime.strptime(v, '%Y-%m-%dT%H:%M:%S') except ValueError: raise ValueError('Invalid dt_upto') if values['dt_from'] > v: raise ValueError('dt_upto should be later than dt_from') return v