60 lines
No EOL
2 KiB
Python
60 lines
No EOL
2 KiB
Python
from django.contrib.auth.views import LoginView as Login, LogoutView as Logout
|
|
from django.http.response import HttpResponseRedirect
|
|
from django.contrib.auth import login
|
|
from django.shortcuts import resolve_url
|
|
from django.conf import settings
|
|
from django.views.generic import FormView
|
|
from django.contrib import messages
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from .forms import RegistrationForm, VerificationForm
|
|
from .models import User
|
|
from .mixins import SuperUserRequiredMixin
|
|
|
|
from frontend.mixins import TitleMixin
|
|
from clients.models import ClientProfile
|
|
from partners.models import PartnerProfile
|
|
from mail.views import MailView
|
|
|
|
class LoginView(TitleMixin, Login):
|
|
title = _("Login")
|
|
template_name = "localauth/login.html"
|
|
|
|
class LogoutView(Logout):
|
|
next_page = "/"
|
|
|
|
class RegistrationView(TitleMixin, Login):
|
|
title = _("Registrieren")
|
|
form_class = RegistrationForm
|
|
template_name = "localauth/register.html"
|
|
|
|
def form_valid(self, form):
|
|
user = User.objects.create_user(form.cleaned_data["email"])
|
|
user.set_password(form.cleaned_data["password1"])
|
|
user.save()
|
|
|
|
login(self.request, user)
|
|
|
|
messages.success(self.request, _("Erfolgreich registriert!"))
|
|
return HttpResponseRedirect(self.get_success_url())
|
|
|
|
def get_default_redirect_url(self):
|
|
return resolve_url(self.next_page or settings.REGISTER_REDIRECT_URL)
|
|
|
|
class VerificationView(SuperUserRequiredMixin, FormView):
|
|
form_class = VerificationForm
|
|
template_name = "localauth/verify.html"
|
|
|
|
def form_valid(self, form):
|
|
pid = form.cleaned_data["profile"]
|
|
ptype = ClientProfile if profile.startswith("C") else PartnerProfile
|
|
pobj = ptype.objects.get(id=profile[1:])
|
|
pobj.update(verified=True)
|
|
|
|
messages.success(self.request, _("Benutzer %s bestätigt!") % pobj.full_name)
|
|
|
|
return HttpResponseRedirect(resolve_url("localauth:verify"))
|
|
|
|
class EmailVerificationMailView(MailView):
|
|
template_name = "localauth/mail/verify.html"
|
|
|