import datetime from dataclasses import dataclass from typing import Optional import marshmallow_dataclass from marshmallow import EXCLUDE @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 is_teacher: bool = False campus: str = "Москва" daily_notify_today: bool = True 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) is not 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)