Coverage for clusterpackage / views.py: 85%
74 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-24 12:43 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-24 12:43 +0000
1from django.contrib.auth.mixins import LoginRequiredMixin
2from django.contrib import messages
3from django.http import HttpResponseRedirect
4from sm.views import SafeDeleteMixin
7from .models import Model
8from .forms import Form, FormDisabled
9from . import app_label
11from django.views.generic import ListView as GenericListView
12from django.views.generic.edit import UpdateView as GenericUpdateView
13from django.views.generic.edit import CreateView as GenericCreateView
14from django.views.generic.edit import DeleteView as GenericDeleteView
15from django.contrib.messages.views import SuccessMessageMixin
17from django.utils.translation import gettext as _
19try:
20 from django.urls import reverse_lazy
21except Exception: # pragma: no cover
22 from django.urls import reverse_lazy # pragma: no cover
25class ListView(LoginRequiredMixin, GenericListView):
26 template_name = "%s/list.html" % app_label
27 model = Model
28 paginate_by = 20
29 paginate_orphans = paginate_by / 4
30 ordering = "name"
32 def get_queryset(self):
33 queryset = super().get_queryset()
34 if self.request.user.is_superuser:
35 return queryset.order_by(self.ordering)
36 user_groups = self.request.user.groups.all()
37 return queryset.filter(cluster__group__in=user_groups).order_by(self.ordering)
40class DetailView(LoginRequiredMixin, GenericUpdateView):
41 template_name = "%s/detail.html" % app_label
42 model = Model
43 form_class = FormDisabled
45 def get_queryset(self):
46 queryset = super().get_queryset()
47 if self.request.user.is_superuser:
48 return queryset
49 user_groups = self.request.user.groups.all()
50 return queryset.filter(cluster__group__in=user_groups)
53class UpdateView(SuccessMessageMixin, LoginRequiredMixin, GenericUpdateView):
54 success_message = "%(name)s " + _("was updated successfully")
56 template_name = "%s/edit.html" % app_label
57 model = Model
59 def form_valid(self, form):
60 self.object = form.save()
61 messages.success(self.request, self.success_message % self.object.__dict__)
63 return HttpResponseRedirect(self.get_success_url())
65 def get_queryset(self):
66 queryset = super().get_queryset()
67 if self.request.user.is_superuser:
68 return queryset
69 user_groups = self.request.user.groups.all()
70 return queryset.filter(cluster__group__in=user_groups)
72 form_class = Form
73 success_url = reverse_lazy("%s:index" % app_label)
76class CreateView(SuccessMessageMixin, LoginRequiredMixin, GenericCreateView):
77 success_message = "%(name)s " + _("was created successfully")
79 template_name = "%s/edit.html" % app_label
80 fields = "__all__"
81 model = Model
82 success_url = reverse_lazy("%s:index" % app_label)
84 def form_valid(self, form):
85 self.object = form.save()
86 messages.success(self.request, self.success_message % self.object.__dict__)
88 return HttpResponseRedirect(self.get_success_url())
91class DeleteView(SafeDeleteMixin, LoginRequiredMixin, GenericDeleteView):
92 success_message = "%(name)s " + _("was deleted successfully")
93 template_name = "delete.html"
94 model = Model
95 success_url = reverse_lazy("%s:index" % app_label)
97 def get_queryset(self):
98 queryset = super().get_queryset()
99 if self.request.user.is_superuser:
100 return queryset
101 user_groups = self.request.user.groups.all()
102 return queryset.filter(cluster__group__in=user_groups)