import datetime from dataclasses import dataclass from typing import Optional import marshmallow_dataclass from marshmallow import EXCLUDE, post_load @dataclass class User: chat_id: int name: Optional[str] = None group: Optional[str] = None hse_id: Optional[int] = None state: str = "new" notify_minutes: Optional[int] = 10 daily_notify_time: Optional[str] = None next_daily_notify_time: Optional[datetime.datetime] = None class Meta: unknown = EXCLUDE @dataclass class Lesson: hse_id: int USchema = marshmallow_dataclass.class_schema(User) class UserSchema(USchema): @post_load def stringify_time(self, in_data, **kwargs): if 'next_daily_notify_time' in in_data: in_data['next_daily_notify_time'] = str(in_data['next_daily_notify_time']) return in_data