Exemplo n.º 1
0
class UserManager(BaseUserManager.from_queryset(UserQuerySet)):
    use_in_migrations = True

    @transaction.atomic
    def _create_user(self,
                     email,
                     password,
                     display_name=None,
                     is_active=True,
                     **extra_fields):
        """ Creates and saves a user with the given username, email and password.

        """
        email = self._validate_email(email)
        extra_fields['unverified_email'] = email

        user = self.model(email=email,
                          is_active=is_active,
                          display_name=display_name,
                          **extra_fields)
        user.set_password(password)
        user.save()
        user.send_welcome_email()
        return user

    def _validate_email(self, email):
        if email is None:
            raise ValueError('The email field must be set')
        return self.normalize_email(email)

    def create_user(self,
                    email=None,
                    password=None,
                    display_name=None,
                    **extra_fields):
        return self._create_user(email, password, display_name, **extra_fields)

    def create_superuser(self, email, password, **extra_fields):
        user = self._create_user(email, password, email, **extra_fields)
        user.is_superuser = True
        user.is_staff = True
        user.save()
        return user

    def get_by_natural_key(self, email):
        """
        As we don't allow sign-ups with similarly cased email addresses,
        we can allow users to login with case spelling mistakes
        """
        return self.get(email__iexact=email)
Exemplo n.º 2
0
class UserManager(BaseUserManager.from_queryset(UserQuerySet)):
    pass