91 lines
3.4 KiB
Python
91 lines
3.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import datetime
|
|
import secrets
|
|
|
|
from django.db import models
|
|
from django.conf import settings
|
|
from django.contrib.auth.models import BaseUserManager, AbstractUser
|
|
|
|
class UserActivationKey(models.Model):
|
|
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
|
|
activation_key = models.CharField(max_length=64, null=True, blank=True)
|
|
key_expires = models.DateTimeField(null=True, blank=True)
|
|
|
|
@classmethod
|
|
def set_random_key_for_user(cls, user, force=False):
|
|
activation_key = secrets.token_hex()
|
|
|
|
# Create and save their profile
|
|
user_activation_key, created = cls.objects.get_or_create(user=user)
|
|
if created or force:
|
|
user_activation_key.activation_key = activation_key
|
|
user_activation_key.key_expires = datetime.datetime.today() + datetime.timedelta(7)
|
|
user_activation_key.save()
|
|
|
|
return user_activation_key
|
|
|
|
|
|
class MyUserManager(BaseUserManager):
|
|
# def current_time(self):
|
|
# """get current time """
|
|
# from datetime import datetime
|
|
# return datetime.now().strftime("%Y-%m-%d")
|
|
|
|
def create_user(self, username, email, password):
|
|
"""
|
|
Creates and saves a User with the given email, date of
|
|
birth and password.
|
|
"""
|
|
|
|
if not username:
|
|
raise ValueError('username is unique')
|
|
user = self.model(username=username, email=self.normalize_email(email))
|
|
user.set_password(password)
|
|
user.save(using=self._db)
|
|
return user
|
|
|
|
def create_superuser(self, username, email, password):
|
|
"""
|
|
Creates and saves a superuser with the given email, password.
|
|
"""
|
|
user = self.create_user(username, email, password)
|
|
user.is_admin = True
|
|
user.is_staff = True
|
|
user.save(using=self._db)
|
|
return user
|
|
|
|
|
|
class User(AbstractUser):
|
|
Dept_Choice = (
|
|
('测试', '测试'),
|
|
('开发', '开发'),
|
|
)
|
|
realname = models.CharField(max_length=50, verbose_name="真实姓名", null=True, blank=True, editable=True)
|
|
mobile = models.CharField(max_length=11, verbose_name="电话号码", null=True, blank=True, editable=True)
|
|
email = models.EmailField(verbose_name='邮箱', max_length=255, unique=True)
|
|
dept = models.CharField(verbose_name=u'部门', choices=Dept_Choice, default='测试', max_length=100)
|
|
is_active = models.BooleanField(default=True, verbose_name='激活状态')
|
|
is_admin = models.BooleanField(default=False, verbose_name='是否管理员')
|
|
testrailuser = models.CharField(max_length=50, verbose_name="TestRail用户名", null=True, blank=True, editable=True)
|
|
testrailpass = models.CharField(max_length=50, verbose_name="TestRail密码", null=True, blank=True, editable=True)
|
|
def get_full_name(self):
|
|
# The user is identified by their email address
|
|
return self.username
|
|
|
|
def get_short_name(self):
|
|
# The user is identified by their email address
|
|
return self.username
|
|
|
|
def __unicode__(self): # __unicode__ on Python 2
|
|
return self.username
|
|
|
|
def has_perm(self, perm, obj=None):
|
|
"Does the user have a specific permission?"
|
|
# Simplest possible answer: Yes, always
|
|
return True
|
|
|
|
def has_module_perms(self, app_label):
|
|
"Does the user have permissions to view the app `app_label`?"
|
|
# Simplest possible answer: Yes, always
|
|
return True |