54 lines
1.9 KiB
Python
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})
|
|
|