54 lines
1.9 KiB
Python

from django.shortcuts import render, reverse, redirect
from django.urls import reverse_lazy
from django.http import HttpResponseRedirect
from django.views.generic.base import TemplateView
from django.views.generic.edit import FormView, CreateView, UpdateView, DeleteView
from django.views.generic.detail import DetailView
from django.views.generic.list import ListView
from django.contrib.messages.views import SuccessMessageMixin
from django.contrib.auth import authenticate, login
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.forms import PasswordChangeForm
from .models import User
from .forms import UserCreateForm
class AccountCreateView(CreateView, SuccessMessageMixin):
model = User
template_name = "accounts/account_create_form.html"
form_class = UserCreateForm
success_message = "Account created. You are now logged in."
def get_user(self, uidb64):
try:
# urlsafe_base64_decode() decodes to bytestring
uid = urlsafe_base64_decode(uidb64).decode()
user = UserModel._default_manager.get(pk=uid)
except (
TypeError,
ValueError,
OverflowError,
UserModel.DoesNotExist,
ValidationError,
):
user = None
return user
def form_valid(self, form):
self.object = form.save()
user = authenticate(
self.request,
username=form.cleaned_data['email'],
password=form.cleaned_data['password1']
)
if user is not None:
login(self.request, user)
return HttpResponseRedirect(self.get_success_url())
return self.form_invalid(form)
def get_success_url(self):
return reverse("storefront:customer-detail", kwargs={"pk": self.object.pk})