import datetime from dataclasses import dataclass from typing import Optional import marshmallow_dataclass from marshmallow import EXCLUDE, pre_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): def load(self, entity, *args, **kwargs): if entity.get('next_daily_notify_time', None): entity['next_daily_notify_time'] = entity['next_daily_notify_time'].strftime("%Y-%m-%dT%H:%M:00.000+00:00") return super().load(entity, *args, **kwargs)