from django.contrib.auth.models import AbstractUser from django.db import models import uuid class User(AbstractUser): TELEGRAM_ROLES = [ ('admin', 'Администратор системы'), ('hotel_user', 'Сотрудник отеля'), ] telegram_id = models.BigIntegerField( unique=True, null=True, blank=True, verbose_name="ID Телеграм" ) chat_id = models.BigIntegerField( unique=True, null=True, blank=True, verbose_name="ID чата в телеграм" ) role = models.CharField( max_length=20, choices=TELEGRAM_ROLES, default='hotel_user', verbose_name="Роль" ) confirmed = models.BooleanField(default=False, verbose_name="Подтвержден") groups = models.ManyToManyField( 'auth.Group', related_name='custom_user_set', # Уникальное имя для обратной связи blank=True ) user_permissions = models.ManyToManyField( 'auth.Permission', related_name='custom_user_set', # Уникальное имя для обратной связи blank=True ) def __str__(self): return self.username or f"Telegram User {self.telegram_id}" class Meta: verbose_name = "Пользователь" verbose_name_plural = "Пользователи" class NotificationSettings(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name="Пользователь") telegram_enabled = models.BooleanField(default=True, verbose_name="Уведомления в Telegram") email_enabled = models.BooleanField(default=False, verbose_name="Уведомления по Email") email = models.EmailField(blank=True, null=True, verbose_name="Email для уведомлений") notification_time = models.TimeField(default="09:00", verbose_name="Время отправки уведомлений") def __str__(self): return f"Настройки уведомлений для {self.user.username}" class Meta: verbose_name = "Способ оповещения" verbose_name_plural = "Способы оповещений"