Coverage for vocabs/views.py: 83%

106 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2024-06-10 15:48 +0000

1from django.views.generic.detail import DetailView 

2from django.views.generic.list import ListView 

3from django.views.generic.edit import CreateView, UpdateView, DeleteView 

4from django.utils.decorators import method_decorator 

5from django.contrib.auth.decorators import login_required 

6from django.urls import reverse_lazy 

7from django_tables2 import SingleTableView, RequestConfig 

8from .models import SkosConcept, SkosConceptScheme, SkosLabel 

9from .forms import ( 

10 SkosConceptForm, 

11 SkosConceptSchemeForm, 

12 SkosLabelForm, 

13 GenericFilterFormHelper, 

14) 

15from .tables import SkosConceptTable 

16from .filters import SkosConceptFilter 

17 

18 

19class GenericListView(SingleTableView): 

20 filter_class = None 

21 formhelper_class = None 

22 context_filter_name = "filter" 

23 paginate_by = 25 

24 

25 def get_queryset(self, **kwargs): 

26 qs = super(GenericListView, self).get_queryset() 

27 self.filter = self.filter_class(self.request.GET, queryset=qs) 

28 self.filter.form.helper = self.formhelper_class() 

29 return self.filter.qs 

30 

31 def get_table(self, **kwargs): 

32 table = super(GenericListView, self).get_table() 

33 RequestConfig( 

34 self.request, paginate={"page": 1, "per_page": self.paginate_by} 

35 ).configure(table) 

36 return table 

37 

38 def get_context_data(self, **kwargs): 

39 context = super(GenericListView, self).get_context_data() 

40 context[self.context_filter_name] = self.filter 

41 return context 

42 

43 

44class SkosConceptFilterView(GenericListView): 

45 model = SkosConcept 

46 table_class = SkosConceptTable 

47 template_name = "vocabs/skosconcept_filter.html" 

48 filter_class = SkosConceptFilter 

49 formhelper_class = GenericFilterFormHelper 

50 

51 

52class SkosConceptDetailView(DetailView): 

53 

54 model = SkosConcept 

55 template_name = "vocabs/skosconcept_detail.html" 

56 

57 

58class SkosConceptListView(ListView): 

59 

60 model = SkosConcept 

61 template_name = "vocabs/skosconcept_list.html" 

62 

63 

64class SkosConceptCreate(CreateView): 

65 

66 model = SkosConcept 

67 template_name = "vocabs/skosconcept_create.html" 

68 form_class = SkosConceptForm 

69 

70 @method_decorator(login_required) 

71 def dispatch(self, *args, **kwargs): 

72 return super(SkosConceptCreate, self).dispatch(*args, **kwargs) 

73 

74 

75class SkosConceptUpdate(UpdateView): 

76 

77 model = SkosConcept 

78 form_class = SkosConceptForm 

79 template_name = "vocabs/skosconcept_create.html" 

80 

81 @method_decorator(login_required) 

82 def dispatch(self, *args, **kwargs): 

83 return super(SkosConceptUpdate, self).dispatch(*args, **kwargs) 

84 

85 

86class SkosConceptDelete(DeleteView): 

87 model = SkosConcept 

88 template_name = "vocabs/confirm_delete.html" 

89 success_url = reverse_lazy("vocabs:browse_vocabs") 

90 

91 @method_decorator(login_required) 

92 def dispatch(self, *args, **kwargs): 

93 return super(SkosConceptDelete, self).dispatch(*args, **kwargs) 

94 

95 

96##################################################### 

97# ConceptScheme 

98##################################################### 

99 

100 

101class SkosConceptSchemeDetailView(DetailView): 

102 

103 model = SkosConceptScheme 

104 template_name = "vocabs/skosconceptscheme_detail.html" 

105 

106 def get_context_data(self, **kwargs): 

107 context = super(SkosConceptSchemeDetailView, self).get_context_data(**kwargs) 

108 context["concepts"] = SkosConcept.objects.filter(scheme=self.kwargs.get("pk")) 

109 return context 

110 

111 

112class SkosConceptSchemeListView(ListView): 

113 

114 model = SkosConceptScheme 

115 template_name = "vocabs/skosconceptscheme_list.html" 

116 

117 

118class SkosConceptSchemeCreate(CreateView): 

119 

120 model = SkosConceptScheme 

121 form_class = SkosConceptSchemeForm 

122 template_name = "vocabs/skosconceptscheme_create.html" 

123 

124 @method_decorator(login_required) 

125 def dispatch(self, *args, **kwargs): 

126 return super(SkosConceptSchemeCreate, self).dispatch(*args, **kwargs) 

127 

128 

129class SkosConceptSchemeUpdate(UpdateView): 

130 

131 model = SkosConceptScheme 

132 form_class = SkosConceptSchemeForm 

133 template_name = "vocabs/skosconceptscheme_create.html" 

134 

135 @method_decorator(login_required) 

136 def dispatch(self, *args, **kwargs): 

137 return super(SkosConceptSchemeUpdate, self).dispatch(*args, **kwargs) 

138 

139 

140################################################### 

141# SkosLabel 

142################################################### 

143 

144 

145class SkosLabelDetailView(DetailView): 

146 

147 model = SkosLabel 

148 template_name = "vocabs/skoslabel_detail.html" 

149 

150 

151class SkosLabelListView(ListView): 

152 

153 model = SkosLabel 

154 template_name = "vocabs/skoslabel_list.html" 

155 

156 

157class SkosLabelCreate(CreateView): 

158 

159 model = SkosLabel 

160 template_name = "vocabs/skoslabel_create.html" 

161 form_class = SkosLabelForm 

162 

163 @method_decorator(login_required) 

164 def dispatch(self, *args, **kwargs): 

165 return super(SkosLabelCreate, self).dispatch(*args, **kwargs) 

166 

167 

168class SkosLabelUpdate(UpdateView): 

169 

170 model = SkosLabel 

171 form_class = SkosLabelForm 

172 template_name = "vocabs/skoslabel_create.html" 

173 

174 @method_decorator(login_required) 

175 def dispatch(self, *args, **kwargs): 

176 return super(SkosLabelUpdate, self).dispatch(*args, **kwargs)