11from django .contrib .auth .mixins import LoginRequiredMixin
22from django .views .generic import ListView , CreateView , UpdateView , DeleteView
3- from django .urls import reverse_lazy
3+ from django .urls import reverse_lazy , reverse
44from django .contrib import messages
55from .models import Label
66from .forms import LabelForm
7+ from django .shortcuts import render , redirect
8+ from django .contrib .messages .views import SuccessMessageMixin
9+
710
811class LabelListView (LoginRequiredMixin , ListView ):
912 model = Label
@@ -20,4 +23,37 @@ def form_valid(self, form):
2023 messages .success (self .request , "Метка успешно создана" )
2124 return super ().form_valid (form )
2225
23- # Добавьте другие представления для меток (обновление, удаление и т.д.)
26+
27+ class LabelListView (LoginRequiredMixin , ListView ):
28+ model = Label
29+ template_name = 'labels/label_list.html'
30+ context_object_name = 'labels'
31+
32+
33+ class LabelCreateView (LoginRequiredMixin , SuccessMessageMixin , CreateView ):
34+ model = Label
35+ form_class = LabelForm
36+ template_name = 'labels/label_form.html'
37+ success_url = reverse_lazy ('label-list' )
38+ success_message = "Метка успешно создана"
39+
40+
41+ class LabelUpdateView (LoginRequiredMixin , SuccessMessageMixin , UpdateView ):
42+ model = Label
43+ form_class = LabelForm
44+ template_name = 'labels/label_form.html'
45+ success_url = reverse_lazy ('label-list' )
46+ success_message = "Метка успешно изменена"
47+
48+
49+ class LabelDeleteView (LoginRequiredMixin , DeleteView ):
50+ model = Label
51+ template_name = 'labels/label_confirm_delete.html'
52+ success_url = reverse_lazy ('label-list' )
53+
54+ def form_valid (self , form ):
55+ if self .object .tasks .exists ():
56+ messages .error (self .request , "Нельзя удалить метку, связанную с задачами" )
57+ return redirect (reverse ('label-list' ))
58+ messages .success (self .request , "Метка успешно удалена" )
59+ return super ().form_valid (form )
0 commit comments