Created reset password email, Added forgot password view, Added forgot password form, Added set new password form, Added set new password view, fixed signup response issue, fixed main menu ungleich button redirect to django-hosting
This commit is contained in:
parent
d7fc64258a
commit
d8150b6593
13 changed files with 235 additions and 20 deletions
|
|
@ -4,6 +4,10 @@ from django.core.urlresolvers import reverse_lazy, reverse
|
|||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.views.generic import View, CreateView, FormView, ListView, DetailView,\
|
||||
DeleteView, TemplateView, UpdateView
|
||||
from django.contrib.auth.tokens import default_token_generator
|
||||
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
|
||||
from django.contrib import messages
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.contrib.auth import authenticate, login
|
||||
from django.conf import settings
|
||||
|
|
@ -16,7 +20,7 @@ from stored_messages.api import mark_read
|
|||
|
||||
from membership.models import CustomUser, StripeCustomer
|
||||
from utils.stripe_utils import StripeUtils
|
||||
from utils.forms import BillingAddressForm
|
||||
from utils.forms import BillingAddressForm, PasswordResetRequestForm, SetPasswordForm
|
||||
from utils.mailer import BaseEmail
|
||||
from .models import VirtualMachineType, VirtualMachinePlan, HostingOrder
|
||||
from .forms import HostingUserSignupForm, HostingUserLoginForm
|
||||
|
|
@ -164,6 +168,71 @@ class SignupView(CreateView):
|
|||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
||||
|
||||
class PasswordResetView(FormView):
|
||||
template_name = 'hosting/reset_password.html'
|
||||
form_class = PasswordResetRequestForm
|
||||
success_message = "The link to reset your email has been sent to your email"
|
||||
success_url = reverse_lazy('hosting:login')
|
||||
# form_valid_message = 'Thank you for registering'
|
||||
|
||||
def form_valid(self, form):
|
||||
|
||||
email = form.cleaned_data.get('email')
|
||||
user = CustomUser.objects.get(email=email)
|
||||
|
||||
messages.add_message(self.request, messages.SUCCESS, self.success_message)
|
||||
|
||||
context = {
|
||||
'user': user,
|
||||
'token': default_token_generator.make_token(user),
|
||||
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
|
||||
'site_name': 'ungleich',
|
||||
'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host())
|
||||
|
||||
}
|
||||
email_data = {
|
||||
'subject': 'Password Reset',
|
||||
'to': email,
|
||||
'context': context,
|
||||
'template_name': 'password_reset_email',
|
||||
'template_path': 'emails/'
|
||||
}
|
||||
email = BaseEmail(**email_data)
|
||||
email.send()
|
||||
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
||||
|
||||
class PasswordResetConfirmView(FormView):
|
||||
template_name = 'hosting/confirm_reset_password.html'
|
||||
form_class = SetPasswordForm
|
||||
success_url = reverse_lazy('hosting:login')
|
||||
|
||||
def post(self, request, uidb64=None, token=None, *arg, **kwargs):
|
||||
try:
|
||||
uid = urlsafe_base64_decode(uidb64)
|
||||
user = CustomUser.objects.get(pk=uid)
|
||||
except (TypeError, ValueError, OverflowError, CustomUser.DoesNotExist):
|
||||
user = None
|
||||
|
||||
form = self.form_class(request.POST)
|
||||
|
||||
if user is not None and default_token_generator.check_token(user, token):
|
||||
if form.is_valid():
|
||||
new_password = form.cleaned_data['new_password2']
|
||||
user.set_password(new_password)
|
||||
user.save()
|
||||
messages.success(request, 'Password has been reset.')
|
||||
return self.form_valid(form)
|
||||
else:
|
||||
messages.error(request, 'Password reset has not been unsuccessful.')
|
||||
return self.form_invalid(form)
|
||||
|
||||
else:
|
||||
messages.error(request, 'The reset password link is no longer valid.')
|
||||
return self.form_invalid(form)
|
||||
|
||||
|
||||
class NotificationsView(TemplateView):
|
||||
template_name = 'hosting/notifications.html'
|
||||
|
||||
|
|
@ -286,16 +355,6 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
|||
# Send notification to ungleich as soon as VM has been booked
|
||||
# TODO send email using celery
|
||||
|
||||
from django.core.mail import send_mail
|
||||
|
||||
send_mail(
|
||||
'Subject here',
|
||||
'Here is the message.',
|
||||
'levinoelvm@gmail.com',
|
||||
['levinoelvm@gmail.com'],
|
||||
fail_silently=False,
|
||||
)
|
||||
|
||||
context = {
|
||||
'vm': plan,
|
||||
'order': order,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue