Advertisement
Guest User

Max Goodridge #2

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