from django.contrib.auth.models import AbstractUser from django.db import models import uuid class User(AbstractUser): TELEGRAM_ROLES = [ ('admin', 'Administrator'), ('hotel_user', 'Hotel User'), ] telegram_id = models.BigIntegerField( unique=True, null=True, blank=True, verbose_name="Telegram ID" ) chat_id = models.BigIntegerField( unique=True, null=True, blank=True, verbose_name="Chat ID" ) role = models.CharField( max_length=20, choices=TELEGRAM_ROLES, default='hotel_user', verbose_name="Role" ) confirmed = models.BooleanField(default=False, verbose_name="Confirmed") 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 UserConfirmation(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="User") confirmation_code = models.UUIDField(default=uuid.uuid4, verbose_name="Confirmation Code") created_at = models.DateTimeField(auto_now_add=True, verbose_name="Created At") def __str__(self): return f"Confirmation for {self.user.username} - {self.confirmation_code}" class WordPressUserActivityLog(models.Model): id = models.AutoField(primary_key=True) user_id = models.IntegerField() activity_type = models.CharField(max_length=255) timestamp = models.DateTimeField() additional_data = models.JSONField(null=True, blank=True) class Meta: db_table = 'wpts_user_activity_log' # Название таблицы в базе данных WordPress managed = False # Django не будет управлять этой таблицей app_label = 'Users' # Замените на имя вашего приложения class LocalUserActivityLog(models.Model): id = models.AutoField(primary_key=True) user_id = models.IntegerField() activity_type = models.CharField(max_length=255) timestamp = models.DateTimeField() additional_data = models.JSONField(null=True, blank=True) def __str__(self): return f"User {self.user_id} - {self.activity_type}"