from django.contrib.auth.models import AbstractUser from django.db import models from accounts.manager import UserManager from partner.models import Partner ROLE_CHOICES = ( ('admin', 'Admin'), ('manager', 'Manager'), ('staff', 'Staff'), ('customer', 'Customer'), ('partner', 'Partner'), ('partner_manager', 'Partner Manager'), ('partner_staff', 'Partner Staff'), ('partner_customer', 'Partner Customer'), ) class User(AbstractUser): phone_number = models.CharField(max_length=15, blank=True, null=True) role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='Staff') partner = models.ForeignKey(Partner, on_delete=models.CASCADE, blank=True, null=True) is_staff = models.BooleanField(default=False) is_customer = models.BooleanField(default=False) is_user = models.BooleanField(default=False) # Location fields pincode = models.CharField(max_length=10, blank=True, null=True) district = models.CharField(max_length=100, blank=True, null=True) state = models.CharField(max_length=100, blank=True, null=True) country = models.CharField(max_length=100, blank=True, null=True) place = models.CharField(max_length=200, blank=True, null=True) # Location fields latitude = models.DecimalField(max_digits=9, decimal_places=6, blank=True, null=True) longitude = models.DecimalField(max_digits=9, decimal_places=6, blank=True, null=True) profile_picture = models.ImageField(upload_to='profile_pictures/', blank=True, null=True, default='default.png') objects = UserManager() def __str__(self): return self.username