models.py
4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import os
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager, Group, Permission
from django.utils.translation import gettext_lazy as _
from django.db import models
from wxProject.settings import UPLOAD_MEDIA_CHOICES
class UserManager(BaseUserManager):
def _create_user(self, username, password, email, **kwargs):
if not username:
raise ValueError(u"请输入用户名")
if not password:
raise ValueError(u"请输入密码")
if not email:
raise ValueError(u"请输入邮箱地址")
user = self.model(username=username, email=email, **kwargs)
user.set_password(password)
user.save()
return user
def create_user(self, username, password, email, **kwargs):
kwargs['is_superuser'] = False
return self._create_user(username, password, email, **kwargs)
def create_superuser(self, username, password, email, **kwargs):
kwargs['is_superuser'] = True
kwargs['is_staff'] = True
kwargs['is_active'] = True
return self._create_user(username, password, email, **kwargs)
class User(AbstractBaseUser, PermissionsMixin):
GENDER_TYPE = (
('1', '男'),
('2', '女'),
)
username = models.CharField(max_length=50, verbose_name="用户名", unique=True)
nickname = models.CharField(max_length=50, null=True, blank=True, verbose_name="昵称")
gender = models.CharField(max_length=10, choices=GENDER_TYPE, null=True, blank=True, verbose_name="性别")
phone = models.CharField(max_length=20, null=True, blank=True, verbose_name="电话号码")
email = models.EmailField(verbose_name="邮箱", unique=True)
picture = models.ImageField(upload_to="profile/%Y/%m/%d", null=True, blank=True, verbose_name="头像")
dept = models.CharField(max_length=200, null=True, blank=True, verbose_name="部门")
wx_token = models.CharField(max_length=200, null=True, blank=True, verbose_name="微信令牌")
dd_token = models.CharField(max_length=200, null=True, blank=True, verbose_name="钉钉令牌")
is_active = models.BooleanField(default=False, verbose_name="状态")
is_staff = models.BooleanField(default=True, verbose_name="是否是员工")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
groups = models.ManyToManyField(
Group,
verbose_name=_('groups'),
blank=True,
help_text=_(
'The groups this user belongs to. A user will get all permissions '
'granted to each of their groups.'
),
related_name="user_group",
related_query_name="user",
)
user_permissions = models.ManyToManyField(
Permission,
verbose_name=_('user permissions'),
blank=True,
help_text=_('Specific permissions for this user.'),
related_name="user_permission",
related_query_name="user",
)
# USERNAME_FIELD = 'username'
USERNAME_FIELD = 'email'
EMAIL_FIELD = 'email'
REQUIRED_FIELDS = ['username']
objects = UserManager()
def __str__(self):
return self.username
def get_full_name(self):
return self.username
def get_short_name(self):
return self.nickname if self.nickname else self.username
class Meta:
verbose_name = "user"
verbose_name_plural = verbose_name
db_table = "auth_user"
class Media(models.Model):
""" 媒体文件库 """
class Meta:
ordering = ('-create_time',)
index_together = ("hash", "size")
def __str__(self):
return self.file
file = models.FileField(max_length=200, upload_to="%Y-%m-%d", verbose_name="文件地址")
size = models.PositiveIntegerField(verbose_name="文件大小", null=True, blank=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name="uploader", verbose_name="上传用户")
extension = models.CharField(max_length=10, verbose_name="文件扩展名", choices=UPLOAD_MEDIA_CHOICES)
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
hash = models.CharField(max_length=200, verbose_name="文件哈希", null=True, blank=True)