Coverage for servermodel / views.py: 95%

63 statements  

« 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 

5 

6from .models import Model 

7from .forms import Form, FormDisabled 

8from . import app_label 

9 

10from django.views.generic import ListView as GenericListView 

11from django.views.generic.edit import UpdateView as GenericUpdateView 

12from django.views.generic.edit import CreateView as GenericCreateView 

13from django.views.generic.edit import DeleteView as GenericDeleteView 

14from django.contrib.messages.views import SuccessMessageMixin 

15 

16from django.utils.translation import gettext as _ 

17 

18try: 

19 from django.urls import reverse_lazy 

20except Exception: # pragma: no cover 

21 from django.urls import reverse_lazy # pragma: no cover 

22 

23 

24class ListView(LoginRequiredMixin, GenericListView): 

25 template_name = "%s/list.html" % app_label 

26 model = Model 

27 paginate_by = 20 

28 paginate_orphans = paginate_by / 4 

29 ordering = "name" 

30 

31 def get_queryset(self): 

32 from vendor.models import Model as VendorModel 

33 

34 qs = VendorModel.objects.filter(is_hardware=True) 

35 if "srvmanager-show_empty" in self.request.COOKIES: 

36 if self.request.COOKIES["srvmanager-show_empty"] == "false": 

37 return qs.exclude(servermodel=None).order_by("name") 

38 return qs.order_by("name") 

39 

40 

41class DetailView(LoginRequiredMixin, GenericUpdateView): 

42 template_name = "%s/detail.html" % app_label 

43 model = Model 

44 form_class = FormDisabled 

45 

46 

47class UpdateView(SuccessMessageMixin, LoginRequiredMixin, GenericUpdateView): 

48 success_message = "%(name)s " + _("was updated successfully") 

49 

50 template_name = "%s/edit.html" % app_label 

51 model = Model 

52 

53 def form_valid(self, form): 

54 self.object = form.save() 

55 messages.success(self.request, self.success_message % self.object.__dict__) 

56 

57 return HttpResponseRedirect(self.get_success_url()) 

58 

59 form_class = Form 

60 success_url = reverse_lazy("%s:index" % app_label) 

61 

62 

63class CreateView(SuccessMessageMixin, LoginRequiredMixin, GenericCreateView): 

64 success_message = "%(name)s " + _("was created successfully") 

65 

66 template_name = "%s/edit.html" % app_label 

67 form_class = Form 

68 model = Model 

69 success_url = reverse_lazy("%s:index" % app_label) 

70 

71 def get_initial(self): 

72 from vendor.models import Model as VendorModel 

73 

74 initial = super().get_initial() 

75 if "vendor" in self.kwargs: 

76 initial["vendor"] = VendorModel.objects.filter( 

77 pk=self.kwargs["vendor"] 

78 ).first() 

79 return initial 

80 

81 def form_valid(self, form): 

82 self.object = form.save() 

83 messages.success(self.request, self.success_message % self.object.__dict__) 

84 

85 return HttpResponseRedirect(self.get_success_url()) 

86 

87 

88class DeleteView(SafeDeleteMixin, LoginRequiredMixin, GenericDeleteView): 

89 success_message = "%(name)s " + _("was deleted successfully") 

90 template_name = "delete.html" 

91 model = Model 

92 success_url = reverse_lazy("%s:index" % app_label)