models.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #coding=utf-8
  2. from django.db import models
  3. from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, Group, PermissionsMixin
  4. from django.utils import timezone
  5. from django.conf import settings
  6. from apps.exceptions import CustomError
  7. class Branch(models.Model):
  8. name = models.CharField(max_length=200, verbose_name=u"名称")
  9. tel = models.CharField(max_length=50, verbose_name=u"电话")
  10. address = models.CharField(max_length=200, verbose_name=u"地址")
  11. enabled = models.BooleanField(verbose_name=u"在用", default=True)
  12. create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
  13. @staticmethod
  14. def getById(id):
  15. try:
  16. id = int(id)
  17. except:
  18. raise CustomError(u'无效的门店ID')
  19. instance = Branch.objects.filter(pk=id).first()
  20. if not instance:
  21. raise CustomError(u'未找到相应的门店')
  22. return instance
  23. class Meta:
  24. db_table = "branch"
  25. ordering = ['-id']
  26. verbose_name = u"门店管理"
  27. class UserManager(BaseUserManager):
  28. def create_user(self, type, username, password=None, **extra_fields):
  29. if not username:
  30. raise ValueError(u'请输入用户名')
  31. user = self.model(type=type, username=username, is_superuser=False, last_login=timezone.now(), **extra_fields)
  32. user.set_password(password)
  33. user.save(using=self._db)
  34. return user
  35. def create_superuser(self, username, password, **extra_fields):
  36. u = self.create_user(User.EMPLOYEE, username, password, **extra_fields)
  37. u.is_superuser = True
  38. u.save(using=self._db)
  39. return u
  40. class User(AbstractBaseUser, PermissionsMixin):
  41. EMPLOYEE = 1
  42. CUSTOMER = 2
  43. TYPE_CHOICES = (
  44. (EMPLOYEE, u'员工'),
  45. (CUSTOMER, u'客户'),
  46. )
  47. type = models.PositiveSmallIntegerField(verbose_name=u"类型", choices=TYPE_CHOICES, editable=False, default=EMPLOYEE)
  48. branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT, null=True, blank=True)
  49. name = models.CharField(max_length=20, verbose_name=u"姓名")
  50. username = models.CharField(max_length=30, verbose_name=u'账号', unique=True, db_index=True,error_messages={'unique': u'已存在'})
  51. tel = models.CharField(max_length=15, verbose_name=u"手机号码", null=True, blank=True)
  52. gender = models.PositiveSmallIntegerField(choices=settings.GENDER_CHOICES, verbose_name=u"性别",null=True,blank=True)
  53. address = models.CharField(max_length=500, verbose_name=u"家庭住址", null=True, blank=True)
  54. date_joined = models.DateTimeField(verbose_name=u'注册时间', default=timezone.now, null=True)
  55. enabled = models.BooleanField(verbose_name=u"在用", default=True)
  56. objects = UserManager()
  57. USERNAME_FIELD = 'username'
  58. REQUIRED_FIELDS = []
  59. @staticmethod
  60. def getById(id):
  61. try:
  62. id = int(id)
  63. except:
  64. raise CustomError(u'无效的员工ID')
  65. instance = User.objects.filter(pk=id).first()
  66. if not instance:
  67. raise CustomError(u'未找到相应的员工')
  68. return instance
  69. def __str__(self):
  70. return self.name
  71. def __unicode__(self):
  72. return self.name
  73. class Meta:
  74. db_table = "auth_user"
  75. verbose_name = u"人员管理"
  76. ordering = ('-id',)