Coverage for clusterpackage / views.py: 85%

74 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 

6 

7from .models import Model 

8from .forms import Form, FormDisabled 

9from . import app_label 

10 

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 

16 

17from django.utils.translation import gettext as _ 

18 

19try: 

20 from django.urls import reverse_lazy 

21except Exception: # pragma: no cover 

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

23 

24 

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" 

31 

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) 

38 

39 

40class DetailView(LoginRequiredMixin, GenericUpdateView): 

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

42 model = Model 

43 form_class = FormDisabled 

44 

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) 

51 

52 

53class UpdateView(SuccessMessageMixin, LoginRequiredMixin, GenericUpdateView): 

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

55 

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

57 model = Model 

58 

59 def form_valid(self, form): 

60 self.object = form.save() 

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

62 

63 return HttpResponseRedirect(self.get_success_url()) 

64 

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) 

71 

72 form_class = Form 

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

74 

75 

76class CreateView(SuccessMessageMixin, LoginRequiredMixin, GenericCreateView): 

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

78 

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

80 fields = "__all__" 

81 model = Model 

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

83 

84 def form_valid(self, form): 

85 self.object = form.save() 

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

87 

88 return HttpResponseRedirect(self.get_success_url()) 

89 

90 

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) 

96 

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)