Guest User

Untitled

a guest
Dec 22nd, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. from __future__ import unicode_literals
  2. from django.db import models
  3. from django.core.mail import send_mail
  4. from django.contrib.auth.models import PermissionsMixin
  5. from django.contrib.auth.base_user import AbstractBaseUser
  6. from django.utils.translation import ugettext_lazy as _
  7. from django.core.validators import RegexValidator
  8. from .managers import UserManager
  9.  
  10. class User(AbstractBaseUser, PermissionsMixin):
  11.  
  12. phone_regex = RegexValidator(regex=r'^+?1?d{9,15}$', message="")
  13.  
  14. phone_number = models.CharField(validators=[phone_regex], unique=True)
  15.  
  16. email = models.EmailField(_('email address'), unique=True)
  17.  
  18. first_name = models.CharField(_('first name'), max_length=30, blank=True)
  19.  
  20. last_name = models.CharField(_('last name'), max_length=30, blank=True)
  21.  
  22. date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)
  23.  
  24. is_active = models.BooleanField(_('active'), default=True)
  25. avatar = models.ImageField(upload_to='avatars/', null=True, blank=True)
  26. objects = UserManager()
  27. USERNAME_FIELD = 'phone_number'
  28. REQUIRED_FIELDS = []
  29.  
  30. class Meta:
  31. verbose_name = _('user')
  32. verbose_name_plural = _('users')
  33.  
  34. def get_full_name(self):
  35. '''
  36. Returns the first_name plus the last_name, with a space in between.
  37. '''
  38. full_name = '%s %s' % (self.first_name, self.last_name)
  39. return full_name.strip()
  40.  
  41. def get_short_name(self):
  42. '''
  43. Returns the short name for the user.
  44. '''
  45. return self.first_name
  46.  
  47. def email_user(self, subject, message, from_email=None, **kwargs):
  48. '''
  49. Sends an email to this User.
  50. '''
  51. send_mail(subject, message, from_email, [self.email], **kwargs)
  52.  
  53. def sms_user(self, message):
  54. '''
  55. Sends a sms to this User.
  56. '''
  57. pass
  58.  
  59. class UserManager(BaseUserManager):
  60. use_in_migrations = True
  61.  
  62. def _create_user(self, phone_number, password, **extra_fields):
  63. """
  64. Creates and saves a User with the given phone_number and password.
  65. """
  66. if not phone_number:
  67. raise ValueError('The given phone number must be set')
  68. #email = self.normalize_email(email)
  69. user = self.model(phone_number=phone_number, **extra_fields)
  70. user.set_password(password)
  71. user.save(using=self._db)
  72. return user
  73.  
  74.  
  75. def create_user(self, phone_number, password=None, **extra_fields):
  76. extra_fields.setdefault('is_superuser', False)
  77. return self._create_user(phone_number, password, **extra_fields)
  78.  
  79.  
  80. def create_superuser(self, phone_number, password, **extra_fields):
  81. extra_fields.setdefault('is_superuser', True)
  82. if extra_fields.get('is_superuser') is not True:
  83. raise ValueError('Superuser must have is_superuser=True.')
  84. return self._create_user(phone_number, password, **extra_fields)
Add Comment
Please, Sign In to add comment