Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. from django.contrib.auth.base_user import AbstractBaseUser
  2. from django.db import models
  3. from django.contrib.auth.models import AbstractUser, PermissionsMixin
  4. from jokes.models import Joke
  5. from django.utils.translation import ugettext_lazy as _
  6.  
  7. from django.contrib.auth.models import BaseUserManager
  8.  
  9.  
  10. class CustomUserManager(BaseUserManager):
  11. use_in_migrations = True
  12.  
  13. def _create_user(self, email, password, **extra_fields):
  14. """
  15. Creates and saves a User with the given email and password.
  16. """
  17. if not email:
  18. raise ValueError('The given email must be set')
  19. email = self.normalize_email(email)
  20. user = self.model(email=email, **extra_fields)
  21. user.set_password(password)
  22. user.save(using=self._db)
  23. return user
  24.  
  25. def create_user(self, email, password=None, **extra_fields):
  26. extra_fields.setdefault('is_staff', False)
  27. extra_fields.setdefault('is_superuser', False)
  28. return self._create_user(email, password, **extra_fields)
  29.  
  30. def create_superuser(self, email, password, **extra_fields):
  31. extra_fields.setdefault('is_staff', True)
  32. extra_fields.setdefault('is_superuser', True)
  33.  
  34. if extra_fields.get('is_staff') is not True:
  35. raise ValueError('Superuser must have is_staff=True.')
  36. if extra_fields.get('is_superuser') is not True:
  37. raise ValueError('Superuser must have is_superuser=True.')
  38.  
  39. return self._create_user(email, password, **extra_fields)
  40.  
  41.  
  42. class User(AbstractBaseUser, PermissionsMixin):
  43. likes = models.ManyToManyField(Joke, verbose_name=_('понравившиеся'), related_name='liked')
  44. favourites = models.ManyToManyField(Joke, verbose_name=_('избранное'), related_name='favoured')
  45.  
  46. first_name = models.CharField(_('first name'), max_length=30, blank=True)
  47. last_name = models.CharField(_('last name'), max_length=30, blank=True)
  48. email = models.EmailField(_('email address'), unique=True)
  49. is_staff = models.BooleanField(
  50. _('staff status'),
  51. default=False,
  52. help_text=_('Designates whether the user can log into this admin site.'),
  53. )
  54.  
  55. objects = CustomUserManager()
  56.  
  57. USERNAME_FIELD = 'email'
  58. REQUIRED_FIELDS = []
  59.  
  60. class Meta(AbstractBaseUser.Meta):
  61. swappable = 'AUTH_USER_MODEL'
  62. verbose_name = _('user')
  63. verbose_name_plural = _('users')
  64.  
  65. def get_full_name(self):
  66. """
  67. Returns the first_name plus the last_name, with a space in between.
  68. """
  69. full_name = '%s %s' % (self.first_name, self.last_name)
  70. return full_name.strip()
  71.  
  72. def get_short_name(self):
  73. """Returns the short name for the user."""
  74. return self.first_name
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement