2021-09-05 22:04:14 +02:00
|
|
|
from django.contrib import messages
|
2021-09-24 19:20:09 +02:00
|
|
|
from django.core.mail import mail_admins
|
2021-09-05 22:04:14 +02:00
|
|
|
from django.urls import reverse_lazy
|
2021-09-25 20:31:08 +02:00
|
|
|
from django.utils.translation import gettext as _
|
2021-09-29 21:31:40 +02:00
|
|
|
from django.views.generic import UpdateView
|
2021-09-05 22:04:14 +02:00
|
|
|
from django_registration.backends.activation.views import RegistrationView, ActivationView
|
2021-08-29 00:20:02 +02:00
|
|
|
|
2021-09-29 21:31:40 +02:00
|
|
|
from users.forms import CustomRegistrationForm, CustomUserChangeForm
|
2021-09-05 22:04:14 +02:00
|
|
|
from users.models import TenantUser
|
|
|
|
|
|
|
|
|
|
|
|
class CustomRegistrationView(RegistrationView):
|
2021-10-01 11:56:35 +02:00
|
|
|
email_body_template = "registration/activation_email_body.html"
|
|
|
|
email_subject_template = "registration/activation_email_subject.html"
|
|
|
|
template_name = "registration/registration_form.html"
|
2021-09-05 22:04:14 +02:00
|
|
|
form_class = CustomRegistrationForm
|
|
|
|
success_url = reverse_lazy("login")
|
|
|
|
|
|
|
|
def create_inactive_user(self, form: CustomRegistrationForm):
|
|
|
|
"""
|
|
|
|
Create the inactive user account and send an email containing
|
|
|
|
activation instructions.
|
|
|
|
|
|
|
|
"""
|
|
|
|
data = form.cleaned_data
|
|
|
|
new_user = TenantUser.objects.create_user(
|
|
|
|
email=data.get("email"),
|
|
|
|
password=data.get("password1"),
|
|
|
|
name=data.get("name"),
|
|
|
|
is_active=False
|
|
|
|
)
|
2021-09-24 19:20:09 +02:00
|
|
|
mail_admins(f"New User created: {new_user}", "", fail_silently=True)
|
2021-09-05 22:04:14 +02:00
|
|
|
|
|
|
|
self.send_activation_email(new_user)
|
|
|
|
messages.success(self.request,
|
2021-09-25 20:31:08 +02:00
|
|
|
_("You account was created. Please click the confirmation link in the E-Mail to activate it."))
|
2021-09-05 22:04:14 +02:00
|
|
|
return new_user
|
|
|
|
|
|
|
|
|
|
|
|
class CustomActivationView(ActivationView):
|
|
|
|
success_url = reverse_lazy("login")
|
2021-10-01 11:56:35 +02:00
|
|
|
template_name = "registration/activation_failed.html"
|
|
|
|
|
2021-09-05 22:04:14 +02:00
|
|
|
|
|
|
|
def activate(self, *args, **kwargs):
|
|
|
|
username = self.validate_key(kwargs.get("activation_key"))
|
|
|
|
user: TenantUser = self.get_user(username)
|
|
|
|
user.is_active = True
|
|
|
|
user.is_verified = True
|
|
|
|
user.save()
|
2021-09-25 20:31:08 +02:00
|
|
|
messages.success(self.request, _("Account was successfully activated. You can log in now."))
|
2021-09-05 22:04:14 +02:00
|
|
|
|
|
|
|
return user
|
2021-09-29 21:31:40 +02:00
|
|
|
|
|
|
|
|
|
|
|
class UserEditView(UpdateView):
|
|
|
|
template_name = "users/edit.html"
|
|
|
|
model = TenantUser
|
|
|
|
form_class = CustomUserChangeForm
|
|
|
|
|
|
|
|
def get_object(self, queryset=None):
|
|
|
|
return self.request.user
|