Django Customer User Models

 models.pypython

from __future__ import unicode_literals
from utils.random_tool import get_uuid
from django.db import models
from django.utils import six, timezone
from django.contrib.auth.models import (
    BaseUserManager, AbstractBaseUser, PermissionsMixin
)
from django.utils.translation import ugettext_lazy as _


# Create your models here.
class Manger(BaseUserManager):
    def create_user(self, email, password=None):
        if not email:
            raise ValueError("User must have an email address")
        user = self.model(
            email=self.normalize_email(email)
        )
        user.user_id = get_uuid(user.email)
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, password):
        user = self.create_user(
            email=email,
            password=password
        )
        user.is_superuser = True
        user.is_staff = True
        user.is_active = True
        user.save(using=self._db)
        return user

    def get_by_natural_key(self, email):
        return self.get(**{self.model.USERNAME_FIELD: email})


class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(verbose_name='email address', max_length=255, unique=True, )
    user_id = models.CharField(max_length=255)
    user_name = models.CharField(max_length=255)
    nickname = models.CharField(max_length=255)
    func_code = models.CharField(max_length=255)
    login_ip = models.CharField(max_length=255)
    tag = models.IntegerField(blank=True, null=True)
    is_staff = models.BooleanField(_('staff status'), default=False, )
    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
    is_active = models.BooleanField(_('active'), default=False, )

    objects = Manger()
    USERNAME_FIELD = 'email'

    def get_full_name(self):
        if self.nickname:
            return self.nickname
        if self.user_name:
            return self.user_name
        return self.email

    def get_short_name(self):
        if self.nickname:
            return self.nickname
        if self.user_name:
            return self.user_name
        return self.email

    def __str__(self):
        return self.email


class ThirdUser(models.Model):
    user_id = models.CharField(blank=False)
    token = models.CharField()
    weibo = models.CharField()
    weixin = models.CharField()

setting.pydjango

AUTH_USER_MODEL = "authenticate.User"
AUTHENTICATION_BACKENDS = [
    'authenticate.backends.NSCloudBackend',
    'django.contrib.authenticate.backends.ModelBackend',
    ]
相關文章
相關標籤/搜索