Coverage for clustersoftware/views.py: 98%
57 statements
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-24 19:06 +0000
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-24 19:06 +0000
1from django.contrib.auth.mixins import LoginRequiredMixin
2from sm.views import SafeDeleteMixin, GenericCSVExportView, GenericBulkDeleteView
3from sm.mixins import MultiTenantMixin, BulkActionMixin, filter_queryset_by_tenant
5from .models import Model
6from .forms import Form, FormDisabled
7from . import app_label
9from django.views.generic import ListView as GenericListView
10from django.views.generic.edit import UpdateView as GenericUpdateView
11from django.views.generic.edit import CreateView as GenericCreateView
12from django.views.generic.edit import DeleteView as GenericDeleteView
13from django.contrib.messages.views import SuccessMessageMixin
15from django.utils.translation import gettext as _
17from django.urls import reverse_lazy
20class ListView(LoginRequiredMixin, MultiTenantMixin, BulkActionMixin, GenericListView):
21 template_name = "%s/list.html" % app_label
22 model = Model
23 paginate_by = 20
24 paginate_orphans = paginate_by / 4
25 ordering = "name"
27 def get_queryset(self):
28 return super().get_queryset().order_by("name")
31class DetailView(LoginRequiredMixin, MultiTenantMixin, GenericUpdateView):
32 template_name = "%s/detail.html" % app_label
33 model = Model
34 form_class = FormDisabled
37class UpdateView(
38 SuccessMessageMixin, LoginRequiredMixin, MultiTenantMixin, GenericUpdateView
39):
40 success_message = "%(name)s " + _("was updated successfully")
42 template_name = "%s/edit.html" % app_label
43 model = Model
45 form_class = Form
46 success_url = reverse_lazy("%s:index" % app_label)
49class CreateView(
50 SuccessMessageMixin, LoginRequiredMixin, MultiTenantMixin, GenericCreateView
51):
52 success_message = "%(name)s " + _("was created successfully")
54 template_name = "%s/edit.html" % app_label
55 form_class = Form
56 model = Model
57 success_url = reverse_lazy("%s:index" % app_label)
59 def get_initial(self):
60 from vendor.models import Model as VendorModel
62 initial = super().get_initial()
63 if "vendor" in self.kwargs:
64 vendor_qs = VendorModel.objects.filter(pk=self.kwargs["vendor"])
65 if hasattr(self, "request"):
66 vendor_qs = filter_queryset_by_tenant(vendor_qs, self.request)
67 initial["vendor"] = vendor_qs.first()
68 return initial
71class DeleteView(
72 SafeDeleteMixin, LoginRequiredMixin, MultiTenantMixin, GenericDeleteView
73):
74 success_message = "%(name)s " + _("was deleted successfully")
75 template_name = "delete.html"
76 model = Model
77 success_url = reverse_lazy("%s:index" % app_label)
80class BulkDeleteView(GenericBulkDeleteView):
81 model = Model
84class CSVExportView(GenericCSVExportView):
85 model = Model
86 filename = "clustersoftware.csv"
87 export_fields = [
88 ("name", "name"),
89 ("version", "version"),
90 ("vendor", "vendor__name"),
91 ]