Coverage for operatingsystem / views.py: 98%
56 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
3from sm.views import SafeDeleteMixin
4from sm.mixins import MultiTenantMixin
5from typing import Any
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 _
19from django.urls import reverse_lazy
22class ListView(LoginRequiredMixin, MultiTenantMixin, GenericListView):
23 template_name = "%s/list.html" % app_label
24 model = Model
25 paginate_by = 20
26 paginate_orphans = paginate_by / 4
27 ordering = "vendor"
29 def get_queryset(self) -> Any:
30 from vendor.models import Model as VendorModel
32 # Filtering by group is handled by MultiTenantMixin
33 # (via super().get_queryset())
34 # But we need the vendor grouping logic
35 qs = VendorModel.objects.filter(
36 is_software=True, group__in=self.request.user.groups.all()
37 )
38 if self.request.user.is_superuser:
39 qs = VendorModel.objects.filter(is_software=True)
41 if "srvmanager-show_empty" in self.request.COOKIES:
42 if self.request.COOKIES["srvmanager-show_empty"] == "false":
43 return qs.exclude(operatingsystem=None).order_by("name")
44 return qs.order_by("name")
47class DetailView(LoginRequiredMixin, MultiTenantMixin, GenericUpdateView):
48 template_name = "%s/detail.html" % app_label
49 model = Model
50 form_class = FormDisabled
53class UpdateView(
54 SuccessMessageMixin,
55 LoginRequiredMixin,
56 MultiTenantMixin,
57 GenericUpdateView,
58):
59 success_message = "%(version)s " + _("was updated successfully")
60 template_name = "%s/edit.html" % app_label
61 model = Model
62 form_class = Form
63 success_url = reverse_lazy("%s:index" % app_label)
66class CreateView(
67 SuccessMessageMixin,
68 LoginRequiredMixin,
69 MultiTenantMixin,
70 GenericCreateView,
71):
72 success_message = "%(version)s " + _("was created successfully")
74 template_name = "%s/edit.html" % app_label
75 form_class = Form
76 model = Model
77 success_url = reverse_lazy("%s:index" % app_label)
79 def get_initial(self) -> Any:
80 from vendor.models import Model as VendorModel
82 initial = super().get_initial()
83 if "vendor" in self.kwargs:
84 initial["vendor"] = VendorModel.objects.filter(
85 pk=self.kwargs["vendor"]
86 ).first()
87 return initial
90class DeleteView(
91 SafeDeleteMixin,
92 LoginRequiredMixin,
93 MultiTenantMixin,
94 GenericDeleteView,
95):
96 success_message = "%(version)s " + _("was deleted successfully")
97 template_name = "delete.html"
98 model = Model
99 success_url = reverse_lazy("%s:index" % app_label)