38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""
|
||
Модель настроек пользователя
|
||
"""
|
||
from datetime import datetime
|
||
from typing import Optional
|
||
from dataclasses import dataclass
|
||
|
||
|
||
@dataclass
|
||
class UserSettings:
|
||
"""Модель настроек пользователя"""
|
||
|
||
id: Optional[int] = None
|
||
user_id: int = None
|
||
allow_questions: bool = True # Разрешить вопросы
|
||
notify_new_questions: bool = True # Уведомления о новых вопросах
|
||
notify_answers: bool = True # Уведомления об ответах
|
||
language: str = 'ru' # Язык интерфейса
|
||
created_at: Optional[datetime] = None
|
||
updated_at: Optional[datetime] = None
|
||
|
||
|
||
@classmethod
|
||
def _parse_datetime(cls, date_str) -> Optional[datetime]:
|
||
"""Безопасный парсинг datetime из строки"""
|
||
if not date_str or date_str in ['0', '']:
|
||
return None
|
||
try:
|
||
return datetime.fromisoformat(date_str)
|
||
except (ValueError, TypeError):
|
||
return None
|
||
|
||
|
||
def update_timestamp(self):
|
||
"""Обновление времени последнего обновления"""
|
||
self.updated_at = datetime.now()
|
||
|