from django.contrib.auth import models as auth_models from django.db import models from .choices import RoleChoice from .managers import UserManager from ..management.models import Region, Warehouse class User(auth_models.AbstractUser): phone = models.CharField(max_length=255, unique=True) username = models.CharField(max_length=255, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) validated_at = models.DateTimeField(null=True, blank=True) role = models.CharField( max_length=255, choices=RoleChoice, default=RoleChoice.EMPLOYEE, ) region = models.ForeignKey( Region, on_delete=models.SET_NULL, null=True, blank=True, help_text="Faqat menejerlar uchun" ) warehouse = models.ForeignKey( Warehouse, on_delete=models.PROTECT, null=True, blank=True, help_text="Faqat xodimlar uchun" ) def get_full_name(self): return f"{self.first_name} {self.last_name}".strip() or self.phone USERNAME_FIELD = "phone" objects = UserManager() def __str__(self): return self.phone