diff --git a/bds/urls.py b/bds/urls.py index 4ddcbf61..f0877e3f 100644 --- a/bds/urls.py +++ b/bds/urls.py @@ -13,4 +13,5 @@ urlpatterns = [ views.UserCreateView.as_view(), name="user.create.fromclipper", ), + path("user/delete/", views.UserDeleteView.as_view(), name="user.delete"), ] diff --git a/bds/views.py b/bds/views.py index 70bd3c38..e12185f7 100644 --- a/bds/views.py +++ b/bds/views.py @@ -1,9 +1,9 @@ from django.contrib import messages from django.contrib.auth import get_user_model from django.shortcuts import get_object_or_404 -from django.urls import reverse +from django.urls import reverse, reverse_lazy from django.utils.translation import gettext_lazy as _ -from django.views.generic import TemplateView +from django.views.generic import DeleteView, TemplateView from bds.autocomplete import bds_search from bds.forms import ProfileForm, UserForm, UserFromClipperForm, UserFromScratchForm @@ -109,3 +109,16 @@ class UserCreateView(StaffRequiredMixin, MultipleFormView): def form_invalid(self, forms): messages.error(self.request, _("Veuillez corriger les erreurs ci-dessous")) return super().form_invalid(forms) + + +class UserDeleteView(StaffRequiredMixin, DeleteView): + model = User + success_url = reverse_lazy("bds:home") + success_message = "Profil supprimé avec succès !" + + def delete(self, request, *args, **kwargs): + # SuccessMessageMixin does not work with DeleteView, see : + # https://code.djangoproject.com/ticket/21926 + messages.success(request, self.success_message) + + return super().delete(request, *args, **kwargs)