Advertisement
Guest User

Max Goodridge

a guest
Jul 8th, 2017
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.96 KB | None | 0 0
  1. import hashlib
  2. import string
  3. import random
  4. from django.core.mail import send_mail
  5. from django.shortcuts import render, get_object_or_404, redirect
  6. from django.contrib.auth.models import User
  7. from django.contrib.auth import authenticate, get_user_model, login, logout
  8. from django.contrib.auth.decorators import login_required
  9. from django.views.decorators.csrf import csrf_protect
  10. from django.shortcuts import render_to_response
  11. from django.http import HttpResponseRedirect
  12. from django.template import RequestContext
  13. from django.conf import settings
  14. from django.utils import timezone
  15. import datetime
  16. from .models import UserProfile
  17. from .forms import *
  18. from serials.models import *
  19.  
  20. def activation_key_generator(username, size=30, chars=string.ascii_lowercase + string.digits):
  21. encode_username = username.encode('utf-8')
  22. kek = ''.join(random.choice(chars) for _ in range(size)).encode('utf-8')
  23. salt = hashlib.sha1(kek + encode_username).hexdigest()
  24. return salt
  25.  
  26.  
  27.  
  28. def send_some_email(email, username, link):
  29. email = email
  30. subject = '{0}, чтобы завершить свою регистрацию, перейдите по ссылке'.format(username)
  31. message = '{0}, Чтобы полноценно пользоваться нашем сайтом, \n завершите регистрацию, перейдя по ссылке ниже!'.format(username)
  32. from_email = settings.DEFAULT_FROM_EMAIL
  33. recipient_list = [email]
  34. html_message = '{0}'.format(link)
  35. send_mail(subject, message, from_email, recipient_list, fail_silently=False, html_message=html_message)
  36. return print(link)
  37. @csrf_protect
  38. def register(request):
  39.  
  40. if request.method == 'POST':
  41. form = RegistrationForm(request.POST)
  42. if form.is_valid():
  43. user = User.objects.create_user(
  44. username=form.cleaned_data['username'],
  45. password=form.cleaned_data['password1'],
  46. email=form.cleaned_data['email'],
  47. first_name=form.cleaned_data['first_name'],
  48. last_name=form.cleaned_data['last_name'],
  49. )
  50. email = form.cleaned_data['email']
  51. username = form.cleaned_data['username']
  52. get_secret_key = activation_key_generator(username)
  53. link = "127.0.0.1:8000/accounts/activate/{0}".format(get_secret_key)
  54. profile = UserProfile.objects.create(
  55. user=user,
  56. slug=username,
  57. key_expires=timezone.now() + datetime.timedelta(days=2),
  58. activation_key=get_secret_key,
  59. )
  60. send_some_email(email, username, link)
  61. return redirect('/accounts/register/verification')
  62. form = RegistrationForm(request.POST or None)
  63. context = {'form':form}
  64.  
  65. return render(request, 'accounts/registration/register.html', context)
  66.  
  67.  
  68. def verification(request):
  69. return render(request, 'accounts/registration/verificate.html', {})
  70. def register_success(request):
  71. return render(request, 'accounts/registration/success.html', {})
  72.  
  73. def already_is_active(request):
  74. context = {}
  75. return render(request, 'accounts/registration/already_is_active.html', context)
  76.  
  77. def activation(request, key):
  78. profile = get_object_or_404(UserProfile, activation_key=key)
  79. if profile.is_active == False:
  80. if timezone.now() > profile.key_expires:
  81. return redirect('/accounts/reset_activation_key/')
  82. else: #Activation successful
  83. profile.is_active = True
  84. profile.key_expires = False
  85. profile.activation_key = False
  86. profile.save()
  87. return redirect('/accounts/register/success')
  88.  
  89. return redirect('/accounts/already_is_active')
  90.  
  91.  
  92. def logout_page(request):
  93. logout(request)
  94. return HttpResponseRedirect('/')
  95.  
  96. def login_view(request):
  97. if request.user.is_authenticated():
  98. return redirect('/accounts/logout')
  99. form = UserLogInForm(request.POST or None)
  100. if form.is_valid():
  101. username = form.cleaned_data['username']
  102. password = form.cleaned_data['password']
  103. profile = UserProfile.objects.filter(user__username=username)
  104. user = authenticate(request, username=username, password=password)
  105. if user.is_superuser:
  106. login(request, user)
  107. return redirect('/admin/')
  108. if profile is None or profile.count() == 0:
  109. return redirect('/accounts/register')
  110.  
  111. if profile.first().is_active == False:
  112. return redirect('/accounts/reset_activation_key')
  113.  
  114. if user is not None or user == True:
  115. login(request, user)
  116. return redirect('/')
  117. else:
  118. return redirect('/accounts/login')
  119. context = {'form':form}
  120. return render(request, 'accounts/registration/login.html', context)
  121.  
  122. def reset_activation_key(request):
  123. if request.user.is_authenticated():
  124. return redirect('/accounts/logout')
  125. if request.method == "POST":
  126. form = ResetActivationKey(request.POST or None)
  127. if form.is_valid():
  128. email = form.cleaned_data['email']
  129. user = User.objects.get(email=email)
  130. profile = UserProfile.objects.get(user=user)
  131. if profile.is_active:
  132. return redirect('/accounts/login')
  133. if profile is not None and profile.is_active == False :
  134. username = user.username
  135. get_secret_key = activation_key_generator(username)
  136. print(get_secret_key)
  137. profile.activation_key = get_secret_key
  138. profile.key_expires = timezone.now() + datetime.timedelta(days=2)
  139. profile.save()
  140. if profile.future_email != "False":
  141. link = "127.0.0.1:8000/accounts/activate_new_email/{0}".format(get_secret_key)
  142. send_some_email(email, username, link)
  143. return redirect('/accounts/profile/change_email_in_proccess/')
  144. if profile.future_password != "False":
  145. link = "127.0.0.1:8000/accounts/activate_new_password/{0}".format(get_secret_key)
  146. send_some_email(email, username, link)
  147. return redirect('/accounts/profile/change_password_in_proccess/')
  148. link = "127.0.0.1:8000/accounts/activate/{0}".format(get_secret_key)
  149. send_some_email(email, username, link)
  150. return redirect('/account/login')
  151. form = ResetActivationKey()
  152. context = {"form":form}
  153. return render(request, 'accounts/registration/reset_activation_key.html', context)
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160. @login_required(login_url='/accounts/login/')
  161. def profile_view(request):
  162. profile = UserProfile.objects.get(user=request.user)
  163. watched_serial_info = watched_serials.objects.filter(user=request.user)
  164. context = {"profile":profile, "watched_serial_info":watched_serial_info}
  165. return render (request, 'accounts/profile.html', context)
  166.  
  167. @login_required(login_url='/accounts/login/')
  168. def change_email_address_view(request):
  169. if request.method == 'POST':
  170. form = UserChangeEmailAddressForm(request.POST or None)
  171. if form.is_valid():
  172. profile = UserProfile.objects.get(user=request.user)
  173. username = profile.user.username
  174. email = profile.user.email
  175. get_secret_key = activation_key_generator(username)
  176. profile.key_expires = timezone.now() + datetime.timedelta(days=1)
  177. profile.activation_key = get_secret_key
  178. profile.is_active = False
  179. profile.future_email = form.cleaned_data['email']
  180. profile.save()
  181. link = '127.0.0.1:8000/accounts/activate_new_email/{}'.format(get_secret_key)
  182. send_some_email(email, username, link)
  183. return redirect('/accounts/profile/change_email_in_proccess/')
  184. else:
  185. form = UserChangeEmailAddressForm()
  186. context = {'form':form}
  187. return render (request, 'accounts/edit/change_email.html', context)
  188.  
  189.  
  190. def activation_changed_email(request, key):
  191. profile = get_object_or_404(UserProfile, activation_key=key)
  192. if profile.is_active == False:
  193. if timezone.now() > profile.key_expires:
  194. return redirect('/accounts/reset_activation_key/')
  195. else: #Activation successful
  196. profile.is_active = True
  197. profile.user.email = profile.future_email
  198. profile.future_email = False
  199. profile.activation_key = False
  200. profile.user.save()
  201. profile.save()
  202. if request.user.is_authenticated():
  203. logout(request)
  204. return redirect('/accounts/profile/successfully_changed')
  205. else:
  206. return redirect('/accounts/login/')
  207.  
  208. return redirect('/accounts/already_is_active')
  209.  
  210. def change_email_in_proccess(request):
  211. return render(request, 'accounts/edit/between_changed_procces.html')
  212.  
  213. def successfully_changed(request):
  214. return render(request, 'accounts/edit/successfully_changed.html')
  215.  
  216.  
  217.  
  218. def change_password(request):
  219. if request.method == 'POST':
  220. form = UserChangPasswordForm(request.POST or None)
  221. if form.is_valid():
  222. profile = UserProfile.objects.get(user=request.user)
  223. username = profile.user.username
  224. email = profile.user.email
  225. get_secret_key = activation_key_generator(username)
  226. profile.key_expires = timezone.now() + datetime.timedelta(days=1)
  227. profile.activation_key = get_secret_key
  228. profile.is_active = False
  229. profile.future_password = form.cleaned_data['password1']
  230. profile.save()
  231. link = '127.0.0.1:8000/accounts/activate_new_password/{}'.format(get_secret_key)
  232. send_some_email(email, username, link)
  233. return redirect('/accounts/profile/change_password_in_proccess/')
  234. else:
  235. form = UserChangPasswordForm()
  236. context = {'form':form}
  237. return render (request, 'accounts/edit/change_password.html', context)
  238.  
  239. def activation_changed_password(request, key):
  240. profile = get_object_or_404(UserProfile, activation_key=key)
  241. if profile.is_active == False:
  242. if timezone.now() > profile.key_expires:
  243. return redirect('/accounts/reset_activation_key/')
  244. else: #Activation successful
  245. profile.is_active = True
  246. future_pass = profile.future_password
  247. profile.user.set_password(future_pass)
  248. profile.future_email = False
  249. profile.future_password = False
  250. profile.activation_key = False
  251. profile.user.save()
  252. profile.save()
  253. if request.user.is_authenticated():
  254. logout(request)
  255. return redirect('/accounts/profile/successfully_changed')
  256. else:
  257. return redirect('/accounts/profile/successfully_changed')
  258. return redirect('/accounts/already_is_active')
  259.  
  260. def change_password_in_proccess(request):
  261. return render (request, 'accounts/edit/change_password_in_proccess.html', context)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement