models.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. from apps.foundation.consts import CONTENT_TYPE_SORTING, MENU_TO_MODEL
  8. from apps.foundation.models import BizLog
  9. from apps.activity.models import Branch
  10. class UserManager(BaseUserManager):
  11. def create_user(self, username, password=None, **extra_fields):
  12. if not username:
  13. raise ValueError(u'请输入用户名')
  14. user = self.model(username=username, is_superuser=False,
  15. last_login=timezone.now(), **extra_fields)
  16. user.set_password(password)
  17. user.save(using=self._db)
  18. return user
  19. def create_superuser(self, username, password, **extra_fields):
  20. u = self.create_user(username, password, **extra_fields)
  21. u.is_superuser = True
  22. u.save(using=self._db)
  23. return u
  24. # def sort_perms(self, perms):
  25. # def get_index(app_label, model):
  26. # try:
  27. # return CONTENT_TYPE_SORTING.index('{}-{}'.format(app_label, model))
  28. # except:
  29. # return 9999
  30. #
  31. # perms = perms.order_by('content_type__model', 'id')
  32. # perms = sorted(perms, key=lambda n: get_index(n.content_type.app_label, n.content_type.model))
  33. # return perms
  34. #
  35. # def get_menuname_of_contenttype(self, app_label, model):
  36. # for menu in MENU_TO_MODEL:
  37. # val = '{}-{}'.format(app_label, model)
  38. # if val in menu[1]:
  39. # return menu[0]
  40. # return u'未分类'
  41. #
  42. # def save_group(self, id, name, permissions, user):
  43. # name = name.strip(u' ')
  44. # #old_permissions = None
  45. # if id == None or id == '':
  46. # is_exist = Group.objects.filter(name=name).first()
  47. # if is_exist:
  48. # raise CustomError(u'名称为[%s]的权限组已存在' % name)
  49. # group = Group.objects.create(name=name)
  50. # BizLog.objects.addnew(user, BizLog.INSERT, u"添加权限组[%s],id=%d" % (group.name, group.id))
  51. # else:
  52. # is_exist = Group.objects.filter(name=name).exclude(pk=id).first()
  53. # if is_exist:
  54. # raise CustomError(u'名称为[%s]的权限组已存在' % name)
  55. # group = Group.objects.filter(pk=id).first()
  56. # if not group:
  57. # raise CustomError(u'未找到相应的权限组')
  58. # group.name = name
  59. # group.save()
  60. # # old_permissions = [p.id for p in group.permissions.all()]
  61. # BizLog.objects.addnew(user, BizLog.UPDATE, u"修改权限组[%s],id=%d" % (group.name, group.id))
  62. # group.permissions = permissions
  63. # 去掉下属创建权限组中的权限
  64. #if old_permissions:
  65. # new_permissions = [p.id for p in group.permissions.all()]
  66. # diff = list(set(old_permissions).difference(set(new_permissions)))
  67. # users = User.objects.filter(groups=group)
  68. # groups = Group.objects.filter(create_user__in=users,permissions__id__in=diff)
  69. # for g in groups:
  70. # for pk in diff:
  71. # g.permissions.remove(pk)
  72. class User(AbstractBaseUser, PermissionsMixin):
  73. branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT, null=True, blank=True)
  74. name = models.CharField(max_length=20, verbose_name=u"姓名")
  75. username = models.CharField(max_length=30, verbose_name=u'账号', unique=True, db_index=True,error_messages={'unique': u'已存在'})
  76. tel = models.CharField(max_length=15, verbose_name=u"手机号码", null=True, blank=True)
  77. gender = models.PositiveSmallIntegerField(choices=settings.GENDER_CHOICES, verbose_name=u"性别",null=True,blank=True)
  78. address = models.CharField(max_length=500, verbose_name=u"家庭住址", null=True, blank=True)
  79. #department = models.ForeignKey('Department', verbose_name=u"所属部门", null=True, blank=True, on_delete=models.PROTECT)
  80. date_joined = models.DateTimeField(verbose_name=u'注册时间', default=timezone.now, null=True)
  81. enabled = models.BooleanField(verbose_name=u"在用", default=True)
  82. objects = UserManager()
  83. USERNAME_FIELD = 'username'
  84. REQUIRED_FIELDS = []
  85. @staticmethod
  86. def getById(id):
  87. try:
  88. id = int(id)
  89. except:
  90. raise CustomError(u'无效的员工ID')
  91. instance = User.objects.filter(pk=id).first()
  92. if not instance:
  93. raise CustomError(u'未找到相应的员工')
  94. return instance
  95. def __str__(self):
  96. return self.name
  97. def __unicode__(self):
  98. return self.name
  99. class Meta:
  100. db_table = "auth_user"
  101. verbose_name = u"人员管理"
  102. ordering = ('-id',)