src/accounts/views.py
from __future__ import unicode_literals
from django.core.urlresolvers import reverse_lazy
from django.views import generic
from django.contrib.auth import get_user_model
from django.contrib import auth
from django.contrib import messages
from authtools import views as authviews
from braces import views as bracesviews
from django.conf import settings
from . import forms
User = get_user_model()
class LoginView(bracesviews.AnonymousRequiredMixin,
authviews.LoginView):
template_name = "accounts/login.html"
form_class = forms.LoginForm
def form_valid(self, form):
redirect = super(LoginView, self).form_valid(form)
remember_me = form.cleaned_data.get('remember_me')
if remember_me is True:
ONE_MONTH = 30*24*60*60
expiry = getattr(settings, "KEEP_LOGGED_DURATION", ONE_MONTH)
self.request.session.set_expiry(expiry)
return redirect
class LogoutView(authviews.LogoutView):
url = reverse_lazy('business:business_home_view')
class SignUpView(bracesviews.AnonymousRequiredMixin,
bracesviews.FormValidMessageMixin,
generic.CreateView):
form_class = forms.SignupForm
model = User
template_name = 'accounts/signup.html'
success_url = reverse_lazy('business:business_home_view')
form_valid_message = "You're signed up!"
def form_valid(self, form):
r = super(SignUpView, self).form_valid(form)
username = form.cleaned_data["email"]
password = form.cleaned_data["password1"]
user = auth.authenticate(email=username, password=password)
auth.login(self.request, user)
return r
class PasswordChangeView(authviews.PasswordChangeView):
form_class = forms.PasswordChangeForm
template_name = 'accounts/password-change.html'
success_url = reverse_lazy('business:business_home_view')
def form_valid(self, form):
form.save()
messages.success(self.request,
"Your password was changed, "
"hence you have been logged out. Please relogin")
return super(PasswordChangeView, self).form_valid(form)
class PasswordResetView(authviews.PasswordResetView):
form_class = forms.PasswordResetForm
template_name = 'accounts/password-reset.html'
success_url = reverse_lazy('accounts:password-reset-done')
subject_template_name = 'accounts/emails/password-reset-subject.txt'
email_template_name = 'accounts/emails/password-reset-email.html'
class PasswordResetDoneView(authviews.PasswordResetDoneView):
template_name = 'accounts/password-reset-done.html'
class PasswordResetConfirmView(authviews.PasswordResetConfirmAndLoginView):
template_name = 'accounts/password-reset-confirm.html'
form_class = forms.SetPasswordForm