from django.db import models from django.contrib.auth.models import ( AbstractUser ) from apps.core.models import BaseModel class User(AbstractUser, BaseModel): mobile = models.CharField(max_length=18) phone = models.CharField(max_length=18, null=True) national_code = models.CharField(max_length=16) birthdate = models.DateTimeField(null=True) nationality = models.CharField(max_length=20, null=True) ownership_types = ( ('N', 'Natural'), ('L', 'Legal') ) ownership = models.CharField( max_length=1, choices=ownership_types, default='N', help_text="N is natural & L is legal" ) address = models.TextField(max_length=1000, null=True) photo = models.CharField(max_length=50, null=True) province = models.ForeignKey( 'Province', on_delete=models.CASCADE, related_name='user_province', null=True ) city = models.ForeignKey( 'City', on_delete=models.CASCADE, related_name='user_city', null=True ) otp_status = models.BooleanField(default=False) def __str__(self): return f'{self.username} {self.last_name}-{self.last_login}' def save(self, *args, **kwargs): super(User, self).save(*args, **kwargs) class Province(BaseModel): name = models.CharField(max_length=50) def __str__(self): return f'{self.name}' def save(self, *args, **kwargs): super(Province, self).save(*args, **kwargs) class City(BaseModel): name = models.CharField(max_length=50) def __str__(self): return f'{self.name}' def save(self, *args, **kwargs): super(City, self).save(*args, **kwargs) class Organization(BaseModel): name = models.CharField(max_length=50) type = models.CharField(max_length=50) province = models.ForeignKey( Province, on_delete=models.CASCADE, related_name="province_organization", null=True ) city = models.ForeignKey( 'City', on_delete=models.CASCADE, related_name='city_organization', null=True ) parent_organization = models.ForeignKey( 'Organization', on_delete=models.CASCADE, related_name='parents', null=True ) def __str__(self): return f'{self.name}-{self.type}' def save(self, *args, **kwargs): super(Organization, self).save(*args, **kwargs)