Skip to content

Commit b13c9f3

Browse files
committed
update tasks.views.py
1 parent b414f1a commit b13c9f3

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

task_manager/tasks/views.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
from django.contrib.messages.views import SuccessMessageMixin
99
from django.contrib.auth.mixins import LoginRequiredMixin
1010
from django.utils.translation import gettext_lazy as _
11-
11+
from django.shortcuts import redirect
1212
from django_filters.views import FilterView
13-
13+
from django.contrib import messages
1414
from .forms import CreateTaskForm
1515
from .models import Task
1616
from .filters import TaskFilter
17-
17+
from django.core.exceptions import PermissionDenied
1818

1919

2020
class TaskListView(LoginRequiredMixin, FilterView):
@@ -44,6 +44,14 @@ class DetailTaskView(LoginRequiredMixin, DetailView):
4444

4545

4646

47+
# class DeleteTaskView(LoginRequiredMixin, SuccessMessageMixin, DeleteView):
48+
# pattern_name = "tasks:list"
49+
# model = Task
50+
# success_url = reverse_lazy("tasks:task_list")
51+
# template_name = "tasks/delete.html"
52+
# success_message = _("Task deleted successfully")
53+
# login_url = reverse_lazy("login")
54+
# redirect_field_name = None
4755
class DeleteTaskView(LoginRequiredMixin, SuccessMessageMixin, DeleteView):
4856
pattern_name = "tasks:list"
4957
model = Task
@@ -53,6 +61,22 @@ class DeleteTaskView(LoginRequiredMixin, SuccessMessageMixin, DeleteView):
5361
login_url = reverse_lazy("login")
5462
redirect_field_name = None
5563

64+
permission_denied_url = success_url
65+
permission_denied_message = _("Only the task's author can delete it")
66+
67+
def get_object(self, queryset=None):
68+
obj = super().get_object(queryset)
69+
if obj.author != self.request.user:
70+
raise PermissionDenied
71+
return obj
72+
73+
def dispatch(self, request, *args, **kwargs):
74+
try:
75+
return super().dispatch(request, *args, **kwargs)
76+
except PermissionDenied:
77+
messages.error(request, self.permission_denied_message)
78+
return redirect(self.permission_denied_url)
79+
5680

5781
class UpdateTaskView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
5882
model = Task

0 commit comments

Comments
 (0)