From 8faff47696925936d5f3cfc63fdf91a87d66403e Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Sun, 15 Jun 2025 11:31:07 +0200 Subject: [PATCH] Add account deletion functionality with confirmation dialog and routing --- base/templates/auth/user_confirm_delete.html | 25 +++++++++++++++++++ base/templates/auth/user_settings.html | 8 ++++++ base/templates/base.html | 12 +-------- base/urls.py | 1 + base/views.py | 12 ++++++++- game/templates/game/group_confirm_delete.html | 1 - 6 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 base/templates/auth/user_confirm_delete.html diff --git a/base/templates/auth/user_confirm_delete.html b/base/templates/auth/user_confirm_delete.html new file mode 100644 index 0000000..8840f15 --- /dev/null +++ b/base/templates/auth/user_confirm_delete.html @@ -0,0 +1,25 @@ +{% extends "base.html" %} +{% block content %} + +
+
+

+ {{ user.username }} +

+
+

+ Confirmer la supression du compte {{ user.username }} ? +

+

+ Toute suppression est immédiate et définitive. La suppression du compte entraîne la suppression des groupes dont celui-ci est propriétaire. +

+
+ {% csrf_token %} + + Annuler +
+
+
+{% endblock content %} diff --git a/base/templates/auth/user_settings.html b/base/templates/auth/user_settings.html index 9fa4218..c69e952 100644 --- a/base/templates/auth/user_settings.html +++ b/base/templates/auth/user_settings.html @@ -7,6 +7,11 @@ {% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
{% csrf_token %} +
+ +
{% if not user.youtubecredentials.credentials %} Me connecter au compte Youtube @@ -33,5 +38,8 @@
Changer mon mot de passe
+
+ Supprimer mon compte +
{% endblock content %} diff --git a/base/templates/base.html b/base/templates/base.html index 4622abb..16be674 100644 --- a/base/templates/base.html +++ b/base/templates/base.html @@ -48,17 +48,7 @@ diff --git a/base/urls.py b/base/urls.py index 1baffc2..f240d91 100644 --- a/base/urls.py +++ b/base/urls.py @@ -25,5 +25,6 @@ urlpatterns = [ name="password_reset_confirm", ), path("accounts/settings/", views.AccountView.as_view(), name="account_settings"), + path("accounts/delete/", views.AccountDeleteView.as_view(), name="account_delete"), path("legal/", TemplateView.as_view(template_name="privacy.html"), name="legal"), ] diff --git a/base/views.py b/base/views.py index 4165b4a..7ad30e5 100644 --- a/base/views.py +++ b/base/views.py @@ -4,7 +4,7 @@ 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 django.views.generic.edit import CreateView, DeleteView, UpdateView from . import forms @@ -52,3 +52,13 @@ class AccountView(UpdateView): if queryset is None: queryset = self.get_queryset() return queryset.get(pk=self.request.user.pk) + + +class AccountDeleteView(DeleteView): + model = User + success_url = reverse_lazy("index") + + def get_object(self, queryset=None): + if queryset is None: + queryset = self.get_queryset() + return queryset.get(pk=self.request.user.pk) diff --git a/game/templates/game/group_confirm_delete.html b/game/templates/game/group_confirm_delete.html index f8d7e5e..26c5411 100644 --- a/game/templates/game/group_confirm_delete.html +++ b/game/templates/game/group_confirm_delete.html @@ -1,5 +1,4 @@ {% extends "base.html" %} -{% load form %} {% block content %}