51 lines
2.0 KiB
Python

from django.forms import BaseModelForm
from django.shortcuts import render, redirect
from django.contrib.auth import login
from django.views.generic import CreateView
from django.http import HttpResponse, HttpRequest
from server.apps.accounts.forms import CustomUserCreationForm
from server.apps.accounts.models import CustomUser
from django.core.validators import validate_email
from django.core.exceptions import ObjectDoesNotExist
from django.conf import settings
def dashboard(request: HttpRequest) -> HttpResponse:
return render(request, "users/dashboard.html", {})
def not_registered(request: HttpRequest) -> HttpResponse:
return redirect('accounts:login')
def success_registration(request: HttpRequest, activation_token: str) -> HttpResponse:
try:
user = CustomUser.objects.get(activation_token=activation_token)
user.backend = 'django.contrib.auth.backends.ModelBackend'
user.is_staff = True
user.activation_token = ''
user.save()
login(request, user)
return redirect('admin:index')
except ObjectDoesNotExist:
message = 'Activation token not found'
return render(request, 'registration/info.html', {'message': message}, status=404)
class RegisterUser(CreateView):
form_class = CustomUserCreationForm
template_name = 'users/register.html'
def form_valid(self, form: BaseModelForm) -> HttpResponse:
if self.request.recaptcha_is_valid:
user = form.save()
validate_email(form.instance.email)
if settings.CONFIRM_REGISTRATION_BY_EMAIL:
message = 'Please check your email for continue registration'
return render(self.request, 'registration/info.html', {'message': message})
else:
user.backend = 'django.contrib.auth.backends.ModelBackend'
login(self.request, user)
return redirect('admin:index')
return render(self.request, 'users/register.html', self.get_context_data())