Guest User

Untitled

a guest
Nov 3rd, 2017
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. class MyCustomUser(AbstractBaseUser):
  2. email = models.EmailField(max_length=50, verbose_name='email', unique=True)
  3. first_name = models.CharField( max_length=15,blank=False)
  4. last_name = models.CharField( max_length=15,blank=True)
  5. slug = models.SlugField(null=True, unique=True)
  6. is_staff = models.BooleanField()
  7. is_active = models.BooleanField(default=True)
  8. is_admin = models.BooleanField(default=False)
  9.  
  10. objects = UserManager()
  11.  
  12. USERNAME_FIELD = 'email'
  13. REQUIRED_FIELDS = []
  14.  
  15.  
  16. def get_full_name(self):
  17. full_name = '{0} {1}'.format(self.first_name, self.last_name)
  18. return full_name.strip()
  19.  
  20. def get_short_name(self):
  21. return self.first_name
  22.  
  23.  
  24. def has_perm(self, perm, obj=None):
  25. return True
  26.  
  27. def has_module_perms(self, app_label):
  28. return True
  29.  
  30. @property
  31. def is_staff(self):
  32. return self.is_admin
  33.  
  34.  
  35. def __str__(self):
  36. return self.first_name
  37.  
  38. class SignUpForm(UserCreationForm):
  39. first_name = forms.CharField(widget=forms.TextInput(
  40. attrs={'class':'form-control', 'placeholder':'First Name'}))
  41.  
  42. last_name = forms.CharField(widget=forms.TextInput(
  43. attrs={'class':'form-control','placeholder':'Last Name'}))
  44.  
  45. email = forms.EmailField(widget=forms.EmailInput(
  46. attrs={'class':'form-control', 'placeholder':'Email'}))
  47.  
  48. password1 = forms.CharField(widget=forms.PasswordInput(
  49. attrs={'class':'form-control', 'placeholder':'Password'}))
  50.  
  51. password2 = forms.CharField(widget=forms.PasswordInput(
  52. attrs={'class':'form-control', 'placeholder':'Repeat the password'}))
  53.  
  54.  
  55.  
  56. class Meta:
  57. model = MyCustomUser
  58. fields = ['first_name','last_name','email', 'password1', 'password2']
  59.  
  60. def sign_up(request):
  61. form = SignUpForm()
  62. if request.method == 'POST':
  63. form = SignUpForm(request.POST)
  64.  
  65. if form.is_valid():
  66.  
  67. user = form.save(commit=False)
  68.  
  69. #create instance of first_name an last_name
  70. full_name = '{0} {1}' .format(user.first_name, user.last_name)
  71.  
  72. #create user slug with full_name
  73. user.slug = slugify(full_name)
  74. user.is_active = True
  75. user.save()
  76.  
  77. email = form.cleaned_data.get('email')
  78. raw_password = form.cleaned_data.get('password1')
  79.  
  80. site = get_current_site(request)
  81. message = render_to_string('jogos/acc_active.html',{
  82. 'user':user,
  83. 'domain': site.domain,
  84. 'uid': urlsafe_base64_encode(force_bytes(user.pk)),
  85. 'token': default_token_generator.make_token(user),
  86. })
  87.  
  88. mail_subject = 'Activate your account'
  89. to_email = form.cleaned_data.get('email')
  90. email = EmailMessage(mail_subject, message, to=[to_email])
  91. email.send()
  92.  
  93.  
  94. user = authenticate(email=email, password=raw_password)
  95. if user is not None:
  96.  
  97. login(request, user)
  98.  
  99. if request.user.is_authenticated():
  100.  
  101. return HttpResponseRedirect(reverse_lazy('jogos:question-list'))
  102.  
  103. else:
  104. form = SignUpForm()
  105. return render(request, 'jogos/sign_up.html', {'form':form})
  106.  
  107. class MyCustomBackend(object):
  108.  
  109. def authenticate(self, request, email=None, password=None, **kwargs):
  110.  
  111. try:
  112. user = MyCustomUser.objects.get(email=email)
  113.  
  114. if user.check_password(user.password):
  115. return user
  116. else:
  117. return None
  118.  
  119. except MyCustomUser.DoesNotExist:
  120. return None
  121.  
  122.  
  123. def get_user(self, user_id):
  124. try:
  125. return MyCustomUser.objects.get(pk=user_id)
  126.  
  127. except MyCustomUser.DoesNotExist:
  128. return None
Add Comment
Please, Sign In to add comment