from django.contrib.auth import views as auth_views from django.contrib.auth.models import User from django.contrib.messages.views import SuccessMessageMixin from django.shortcuts import redirect from django.urls import reverse_lazy from django.views.generic.base import TemplateView from django.views.generic.edit import CreateView, UpdateView from . import forms class HomePageView(TemplateView): template_name = "index.html" def dispatch(self, request, *args, **kwargs): if request.user.is_authenticated: return redirect("home") return super().dispatch(request, *args, **kwargs) class SignupView(SuccessMessageMixin, CreateView): model = User form_class = forms.UserSignupForm success_url = reverse_lazy("login") success_message = "Le compte %(username)s a été créé avec succès." class PasswordChangeView(SuccessMessageMixin, auth_views.PasswordChangeView): success_message = "Le mot de passe a été changé avec succès." success_url = reverse_lazy("index") class PasswordResetView(SuccessMessageMixin, auth_views.PasswordResetView): success_message = "Un courriel a été envoyé avec les instructions pour réinitialiser votre mot de passe." success_url = reverse_lazy("login") class PasswordResetConfirmView( SuccessMessageMixin, auth_views.PasswordResetConfirmView ): success_message = "Le mot de passe a été réinitialisé avec succès." success_url = reverse_lazy("login") class AccountView(UpdateView): model = User fields = ["username", "email"] success_url = reverse_lazy("index") template_name = "auth/user_settings.html" def get_object(self, queryset=None): if queryset is None: queryset = self.get_queryset() return queryset.get(pk=self.request.user.pk)