/
home
/
liman
/
liman-backend
/
limanAuth
/
File Upload :
llllll
Current File: /home/liman/liman-backend/limanAuth/models.py
from django.db import models from utility.file_manager.models import File from utility.province.models import Province from django.contrib.auth.models import PermissionsMixin, UserManager, AbstractUser from utility.models import SoftDeleteModel from accounting.models import Negotiable class LimanUserManager(UserManager): def create_user(self, mobile, password=None, **extra_fields): if not mobile: raise ValueError('The given mobile must be set') mobile = self.model.normalize_username(mobile) user = self.model(mobile=mobile, **extra_fields) if password: user.set_password(password) user.save() return user def create_superuser(self, mobile, password, email): supper_user = self.create_user(mobile=mobile, password=password, email=email, user_type=100) supper_user.is_superuser = True supper_user.set_password(password) supper_user.save() return supper_user class User(AbstractUser, PermissionsMixin, SoftDeleteModel): USER_TYPE_CHOICES = ( (1, 'admin'), (2, 'customer'), (3, 'porter'), ) SELECT = [ 'username', 'full_name', 'first_name', 'last_name', 'national_code', ] objects = LimanUserManager() USERNAME_FIELD = 'mobile' username = models.CharField(default=None, max_length=150, unique=True, null=True, blank=True) user_type = models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES, default=2) full_name = models.CharField(max_length=128, null=True, blank=True) national_code = models.CharField(max_length=32, null=True, blank=True) mobile = models.CharField(max_length=16, unique=True) email = models.EmailField(null=True, blank=True) phone = models.JSONField(null=True, blank=True) address = models.CharField(max_length=128, null=True, blank=True) access_level = models.IntegerField(default=10) sms_token = models.CharField(max_length=8, null=True, blank=True) city = models.ForeignKey(Province, on_delete=models.SET_NULL, null=True, blank=True) postcode = models.CharField(max_length=16, null=True, blank=True) profile_img = models.ForeignKey('file_manager.File', null=True, blank=True, on_delete=models.SET_NULL, related_name='profiles') birth_date = models.DateTimeField(null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) fcm_token = models.CharField(max_length=256, null=True, blank=True) def has_perm(self, perm, obj=None): return True def has_module_perms(self, app_label): return True @property def is_staff(self): return self.is_superuser class Group(SoftDeleteModel): id = models.AutoField(primary_key=True) title = models.CharField(max_length=256) tahesab_id = models.BigIntegerField(null=True, blank=True) description = models.CharField(max_length=512) class Customer(SoftDeleteModel): SELECT = [ "user__first_name", "user__last_name", "user__full_name", "user__email", "user__mobile", "user__date_joined", ] tahesab_id = models.BigIntegerField(null=True, blank=True) user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, related_name='customer') shop_name = models.CharField(max_length=64, null=True, blank=True) aria = models.CharField(max_length=16, null=True, blank=True) max_period = models.IntegerField(null=True, blank=True) max_debt = models.CharField(null=True, blank=True, max_length=256) economical_number = models.CharField(max_length=32, null=True, blank=True) registration_number = models.CharField(max_length=32, null=True, blank=True) national_card_img = models.ForeignKey(File, null=True, blank=True, on_delete=models.SET_NULL, related_name='national_card_img') license_img = models.ForeignKey(File, null=True, blank=True, on_delete=models.SET_NULL, related_name='license_img') doc_img = models.ForeignKey(File, null=True, blank=True, on_delete=models.SET_NULL, related_name='doc_img') web_url = models.CharField(max_length=128, null=True, blank=True) first_currency = models.ForeignKey(Negotiable, null=True, blank=True, on_delete=models.SET_NULL, related_name='first_currency') second_currency = models.ForeignKey(Negotiable, null=True, blank=True, on_delete=models.SET_NULL, related_name='second_currency') telegram = models.CharField(max_length=128, null=True, blank=True) instagram = models.CharField(max_length=128, null=True, blank=True) whatsapp = models.CharField(max_length=128, null=True, blank=True) group = models.ForeignKey(to=Group, on_delete=models.CASCADE, null=True, blank=True) metal = models.ForeignKey(Negotiable, null=True, blank=True, on_delete=models.SET_NULL, related_name='metal') porters = models.ManyToManyField('limanAuth.Porter', blank=True) class Porter(SoftDeleteModel): SELECT = [ "user__first_name", "user__last_name", "user__full_name", "user__email", "user__mobile", "user__date_joined", ] user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, related_name='porter') credit = models.BigIntegerField(default=0) aria = models.CharField(max_length=16, null=True, blank=True) target = models.FloatField(default=0) customers = models.ManyToManyField(Customer, blank=True) class Vertex(SoftDeleteModel): id = models.AutoField(primary_key=True) porter = models.ForeignKey(Porter, on_delete=models.CASCADE, related_name='porter_vertex', null=True, blank=True) customer = models.ForeignKey(Porter, on_delete=models.CASCADE, related_name='customer_vertex', null=True, blank=True) gold_vertex = models.FloatField(default=0) rial_vertex = models.FloatField(default=0)
Copyright ©2k19 -
Hexid
|
Tex7ure