From f4d8e0b2317c45471e0e8b8e23d60b084a9555f7 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sun, 23 Aug 2020 19:22:54 +0200
Subject: [PATCH] Use class-based views for deleting personal notes

---
 aleksis/apps/alsijil/urls.py  |  4 ++--
 aleksis/apps/alsijil/views.py | 20 +++++++++-----------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py
index 76e12ea7b..e2bba60a0 100644
--- a/aleksis/apps/alsijil/urls.py
+++ b/aleksis/apps/alsijil/urls.py
@@ -30,8 +30,8 @@ urlpatterns = [
     path("persons/<int:id_>/", views.overview_person, name="overview_person"),
     path("me/", views.overview_person, name="overview_me"),
     path(
-        "notes/<int:id_>/delete/",
-        views.delete_personal_note,
+        "notes/<int:pk>/delete/",
+        views.DeletePersonalNoteView.as_view(),
         name="delete_personal_note",
     ),
     path("absence/new", views.register_absence, name="register_absence"),
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index c467ee72b..f936e19aa 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -7,6 +7,7 @@ from django.http import Http404, HttpRequest, HttpResponse, HttpResponseNotFound
 from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse, reverse_lazy
 from django.utils.translation import ugettext as _
+from django.views.generic import DetailView
 
 from calendarweek import CalendarWeek
 from django_tables2 import SingleTableView
@@ -638,18 +639,15 @@ def register_absence(request: HttpRequest) -> HttpResponse:
     return render(request, "alsijil/absences/register.html", context)
 
 
-def delete_personal_note(request: HttpRequest, id_: int) -> HttpResponse:
-    context = {}
-
-    personal_note = get_object_or_404(PersonalNote, pk=id_)
-
-    context["object"] = personal_note
+class DeletePersonalNoteView(DetailView):
+    model = PersonalNote
+    template_name = "core/pages/delete.html"
 
-    if request.method == "POST":
-        personal_note.reset()
-        return redirect("overview_person", personal_note.person.pk)
-    else:
-        return render(request, "core/pages/delete.html", context)
+    def post(self, request, *args, **kwargs):
+        note = self.get_object()
+        note.reset()
+        messages.success(request, _("The personal note has been deleted."))
+        return redirect("overview_person", note.person.pk)
 
 
 class ExtraMarkListView(SingleTableView, PermissionRequiredMixin):
-- 
GitLab