Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- from django.db import models
- from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
- from django.contrib.auth.models import PermissionsMixin
- class UserManager(BaseUserManager):
- use_in_migrations = True
- def _create_user(self, **extra_fields):
- """
- Creates and saves a User with the given username, email and password.
- """
- print ">>>>>>>>>>>>> fields %r " % extra_fields
- document = extra_fields.get("document")
- name = extra_fields.get("name")
- profile = extra_fields.get("profile")
- email = extra_fields.get("email")
- email = self.normalize_email(email)
- password = extra_fields.get("password")
- is_superuser = extra_fields.get("is_superuser")
- if profile not in (User.ROOT, User.ENTERPRISE, User.CHANGER):
- raise ValueError("Profile is invalid.")
- user = self.model(document=document, email=email, name=name, profile=profile, is_superuser=is_superuser)
- user.set_password(password)
- user.save(using=self._db)
- return user
- def create_user(self, **extra_fields):
- extra_fields.setdefault('is_staff', False)
- extra_fields.setdefault('is_superuser', False)
- return self._create_user(**extra_fields)
- def create_superuser(self, **extra_fields):
- extra_fields.setdefault('is_staff', True)
- extra_fields.setdefault('is_superuser', True)
- extra_fields.setdefault('profile', User.ROOT)
- if extra_fields.get('is_superuser') is not True:
- raise ValueError('Superuser must have is_superuser=True.')
- return self._create_user(**extra_fields)
- class User(AbstractBaseUser, PermissionsMixin):
- # kero mudar administration
- ROOT = 10
- # user of enterprise
- ENTERPRISE = 1
- # user type for changer
- CHANGER = 0
- PROFILE_CHOICES = (
- (ROOT, "Root"),
- (ENTERPRISE, "Empresa"),
- (CHANGER, "Mudando"),
- )
- document = models.CharField("CPF/CNPJ", max_length=14, null=False, unique=True, blank=False)
- name = models.CharField("Nome", max_length=150, null=False, blank=False)
- profile = models.IntegerField("Perfil", choices=PROFILE_CHOICES, null=False, blank=False)
- email = models.EmailField("Email", unique=True, blank=False)
- USERNAME_FIELD = "email"
- objects = UserManager()
- class Meta:
- db_table = "users"
- def get_full_name(self):
- return self.name
- @property
- def is_staff(self):
- return self.is_superuser
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement