Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import hashlib
- import string
- import random
- from django.core.mail import send_mail
- from django.shortcuts import render, get_object_or_404, redirect
- from django.contrib.auth.models import User
- from django.contrib.auth import authenticate, get_user_model, login, logout
- from django.contrib.auth.decorators import login_required
- from django.views.decorators.csrf import csrf_protect
- from django.shortcuts import render_to_response
- from django.http import HttpResponseRedirect
- from django.template import RequestContext
- from django.conf import settings
- from django.utils import timezone
- import datetime
- from .models import UserProfile
- from .forms import *
- from serials.models import *
- def activation_key_generator(username, size=30, chars=string.ascii_lowercase + string.digits):
- encode_username = username.encode('utf-8')
- kek = ''.join(random.choice(chars) for _ in range(size)).encode('utf-8')
- salt = hashlib.sha1(kek + encode_username).hexdigest()
- return salt
- def send_some_email(email, username, link):
- email = email
- subject = '{0}, чтобы завершить свою регистрацию, перейдите по ссылке'.format(username)
- message = '{0}, Чтобы полноценно пользоваться нашем сайтом, \n завершите регистрацию, перейдя по ссылке ниже!'.format(username)
- from_email = settings.DEFAULT_FROM_EMAIL
- recipient_list = [email]
- html_message = '{0}'.format(link)
- send_mail(subject, message, from_email, recipient_list, fail_silently=False, html_message=html_message)
- return print(link)
- @csrf_protect
- def register(request):
- if request.method == 'POST':
- form = RegistrationForm(request.POST)
- if form.is_valid():
- user = User.objects.create_user(
- username=form.cleaned_data['username'],
- password=form.cleaned_data['password1'],
- email=form.cleaned_data['email'],
- first_name=form.cleaned_data['first_name'],
- last_name=form.cleaned_data['last_name'],
- )
- email = form.cleaned_data['email']
- username = form.cleaned_data['username']
- get_secret_key = activation_key_generator(username)
- link = "127.0.0.1:8000/accounts/activate/{0}".format(get_secret_key)
- profile = UserProfile.objects.create(
- user=user,
- slug=username,
- key_expires=timezone.now() + datetime.timedelta(days=2),
- activation_key=get_secret_key,
- )
- send_some_email(email, username, link)
- return redirect('/accounts/register/verification')
- form = RegistrationForm(request.POST or None)
- context = {'form':form}
- return render(request, 'accounts/registration/register.html', context)
- def verification(request):
- return render(request, 'accounts/registration/verificate.html', {})
- def register_success(request):
- return render(request, 'accounts/registration/success.html', {})
- def already_is_active(request):
- context = {}
- return render(request, 'accounts/registration/already_is_active.html', context)
- def activation(request, key):
- profile = get_object_or_404(UserProfile, activation_key=key)
- if profile.is_active == False:
- if timezone.now() > profile.key_expires:
- return redirect('/accounts/reset_activation_key/')
- else: #Activation successful
- profile.is_active = True
- profile.key_expires = False
- profile.activation_key = False
- profile.save()
- return redirect('/accounts/register/success')
- return redirect('/accounts/already_is_active')
- def logout_page(request):
- logout(request)
- return HttpResponseRedirect('/')
- def login_view(request):
- if request.user.is_authenticated():
- return redirect('/accounts/logout')
- form = UserLogInForm(request.POST or None)
- if form.is_valid():
- username = form.cleaned_data['username']
- password = form.cleaned_data['password']
- profile = UserProfile.objects.filter(user__username=username)
- user = authenticate(request, username=username, password=password)
- if user.is_superuser:
- login(request, user)
- return redirect('/admin/')
- if profile is None or profile.count() == 0:
- return redirect('/accounts/register')
- if profile.first().is_active == False:
- return redirect('/accounts/reset_activation_key')
- if user is not None or user == True:
- login(request, user)
- return redirect('/')
- else:
- return redirect('/accounts/login')
- context = {'form':form}
- return render(request, 'accounts/registration/login.html', context)
- def reset_activation_key(request):
- if request.user.is_authenticated():
- return redirect('/accounts/logout')
- if request.method == "POST":
- form = ResetActivationKey(request.POST or None)
- if form.is_valid():
- email = form.cleaned_data['email']
- user = User.objects.get(email=email)
- profile = UserProfile.objects.get(user=user)
- if profile.is_active:
- return redirect('/accounts/login')
- if profile is not None and profile.is_active == False :
- username = user.username
- get_secret_key = activation_key_generator(username)
- print(get_secret_key)
- profile.activation_key = get_secret_key
- profile.key_expires = timezone.now() + datetime.timedelta(days=2)
- profile.save()
- if profile.future_email != "False":
- link = "127.0.0.1:8000/accounts/activate_new_email/{0}".format(get_secret_key)
- send_some_email(email, username, link)
- return redirect('/accounts/profile/change_email_in_proccess/')
- if profile.future_password != "False":
- link = "127.0.0.1:8000/accounts/activate_new_password/{0}".format(get_secret_key)
- send_some_email(email, username, link)
- return redirect('/accounts/profile/change_password_in_proccess/')
- link = "127.0.0.1:8000/accounts/activate/{0}".format(get_secret_key)
- send_some_email(email, username, link)
- return redirect('/account/login')
- form = ResetActivationKey()
- context = {"form":form}
- return render(request, 'accounts/registration/reset_activation_key.html', context)
- @login_required(login_url='/accounts/login/')
- def profile_view(request):
- profile = UserProfile.objects.get(user=request.user)
- watched_serial_info = watched_serials.objects.filter(user=request.user)
- context = {"profile":profile, "watched_serial_info":watched_serial_info}
- return render (request, 'accounts/profile.html', context)
- @login_required(login_url='/accounts/login/')
- def change_email_address_view(request):
- if request.method == 'POST':
- form = UserChangeEmailAddressForm(request.POST or None)
- if form.is_valid():
- profile = UserProfile.objects.get(user=request.user)
- username = profile.user.username
- email = profile.user.email
- get_secret_key = activation_key_generator(username)
- profile.key_expires = timezone.now() + datetime.timedelta(days=1)
- profile.activation_key = get_secret_key
- profile.is_active = False
- profile.future_email = form.cleaned_data['email']
- profile.save()
- link = '127.0.0.1:8000/accounts/activate_new_email/{}'.format(get_secret_key)
- send_some_email(email, username, link)
- return redirect('/accounts/profile/change_email_in_proccess/')
- else:
- form = UserChangeEmailAddressForm()
- context = {'form':form}
- return render (request, 'accounts/edit/change_email.html', context)
- def activation_changed_email(request, key):
- profile = get_object_or_404(UserProfile, activation_key=key)
- if profile.is_active == False:
- if timezone.now() > profile.key_expires:
- return redirect('/accounts/reset_activation_key/')
- else: #Activation successful
- profile.is_active = True
- profile.user.email = profile.future_email
- profile.future_email = False
- profile.activation_key = False
- profile.user.save()
- profile.save()
- if request.user.is_authenticated():
- logout(request)
- return redirect('/accounts/profile/successfully_changed')
- else:
- return redirect('/accounts/login/')
- return redirect('/accounts/already_is_active')
- def change_email_in_proccess(request):
- return render(request, 'accounts/edit/between_changed_procces.html')
- def successfully_changed(request):
- return render(request, 'accounts/edit/successfully_changed.html')
- def change_password(request):
- if request.method == 'POST':
- form = UserChangPasswordForm(request.POST or None)
- if form.is_valid():
- profile = UserProfile.objects.get(user=request.user)
- username = profile.user.username
- email = profile.user.email
- get_secret_key = activation_key_generator(username)
- profile.key_expires = timezone.now() + datetime.timedelta(days=1)
- profile.activation_key = get_secret_key
- profile.is_active = False
- profile.future_password = form.cleaned_data['password1']
- profile.save()
- link = '127.0.0.1:8000/accounts/activate_new_password/{}'.format(get_secret_key)
- send_some_email(email, username, link)
- return redirect('/accounts/profile/change_password_in_proccess/')
- else:
- form = UserChangPasswordForm()
- context = {'form':form}
- return render (request, 'accounts/edit/change_password.html', context)
- def activation_changed_password(request, key):
- profile = get_object_or_404(UserProfile, activation_key=key)
- if profile.is_active == False:
- if timezone.now() > profile.key_expires:
- return redirect('/accounts/reset_activation_key/')
- else: #Activation successful
- profile.is_active = True
- future_pass = profile.future_password
- profile.user.set_password(future_pass)
- profile.future_email = False
- profile.future_password = False
- profile.activation_key = False
- profile.user.save()
- profile.save()
- if request.user.is_authenticated():
- logout(request)
- return redirect('/accounts/profile/successfully_changed')
- else:
- return redirect('/accounts/profile/successfully_changed')
- return redirect('/accounts/already_is_active')
- def change_password_in_proccess(request):
- return render (request, 'accounts/edit/change_password_in_proccess.html', context)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement