43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
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
|
|
first_lesson_notify: Optional[float] = None
|
|
yandex_id: Optional[str] = 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) 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)
|