Coverage for vocabs/views.py: 74%

153 statements  

« prev     ^ index     » next       coverage.py v7.6.0, created at 2024-07-27 11:19 +0000

1from django.views.generic.detail import DetailView 

2from django.views.generic.edit import DeleteView 

3from django.utils.decorators import method_decorator 

4from django.contrib.auth.decorators import login_required 

5from django.urls import reverse_lazy 

6from django_tables2 import RequestConfig 

7from .models import SkosConcept, SkosConceptScheme, SkosLabel 

8from .forms import ( 

9 SkosConceptForm, 

10 SkosConceptFormHelper, 

11 SkosConceptSchemeForm, 

12 SkosConceptSchemeFormHelper, 

13 SkosLabelForm, 

14 SkosLabelFormHelper, 

15) 

16from .tables import SkosConceptTable, SkosConceptSchemeTable, SkosLabelTable 

17from .filters import ( 

18 SkosConceptListFilter, 

19 SkosConceptSchemeListFilter, 

20 SkosLabelListFilter, 

21) 

22from webpage.utils import GenericListView, BaseCreateView, BaseUpdateView 

23 

24 

25class SkosConceptListView(GenericListView): 

26 model = SkosConcept 

27 table_class = SkosConceptTable 

28 filter_class = SkosConceptListFilter 

29 formhelper_class = SkosConceptFormHelper 

30 init_columns = [ 

31 "id", 

32 "pref_label", 

33 "broader_concept", 

34 ] 

35 

36 def get_all_cols(self): 

37 all_cols = list(self.table_class.base_columns.keys()) 

38 return all_cols 

39 

40 def get_context_data(self, **kwargs): 

41 context = super(SkosConceptListView, self).get_context_data() 

42 context[self.context_filter_name] = self.filter 

43 togglable_colums = [ 

44 x for x in self.get_all_cols() if x not in self.init_columns 

45 ] 

46 context["togglable_colums"] = togglable_colums 

47 return context 

48 

49 def get_table(self, **kwargs): 

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

51 RequestConfig( 

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

53 ).configure(table) 

54 default_cols = self.init_columns 

55 all_cols = self.get_all_cols() 

56 selected_cols = self.request.GET.getlist("columns") + default_cols 

57 exclude_vals = [x for x in all_cols if x not in selected_cols] 

58 table.exclude = exclude_vals 

59 return table 

60 

61 

62class SkosConceptDetailView(DetailView): 

63 model = SkosConcept 

64 template_name = "vocabs/skosconcept_detail.html" 

65 

66 

67class SkosConceptCreate(BaseCreateView): 

68 model = SkosConcept 

69 form_class = SkosConceptForm 

70 

71 @method_decorator(login_required) 

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

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

74 

75 

76class SkosConceptUpdate(BaseUpdateView): 

77 model = SkosConcept 

78 form_class = SkosConceptForm 

79 

80 @method_decorator(login_required) 

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

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

83 

84 

85class SkosConceptDelete(DeleteView): 

86 model = SkosConcept 

87 template_name = "vocabs/confirm_delete.html" 

88 success_url = reverse_lazy("vocabs:browse_vocabs") 

89 

90 @method_decorator(login_required) 

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

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

93 

94 

95##################################################### 

96# ConceptScheme 

97##################################################### 

98 

99 

100class SkosConceptSchemeListView(GenericListView): 

101 model = SkosConceptScheme 

102 table_class = SkosConceptSchemeTable 

103 filter_class = SkosConceptSchemeListFilter 

104 formhelper_class = SkosConceptSchemeFormHelper 

105 init_columns = [ 

106 "id", 

107 "dc_title", 

108 ] 

109 

110 def get_all_cols(self): 

111 all_cols = list(self.table_class.base_columns.keys()) 

112 return all_cols 

113 

114 def get_context_data(self, **kwargs): 

115 context = super(SkosConceptSchemeListView, self).get_context_data() 

116 context[self.context_filter_name] = self.filter 

117 togglable_colums = [ 

118 x for x in self.get_all_cols() if x not in self.init_columns 

119 ] 

120 context["togglable_colums"] = togglable_colums 

121 return context 

122 

123 def get_table(self, **kwargs): 

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

125 RequestConfig( 

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

127 ).configure(table) 

128 default_cols = self.init_columns 

129 all_cols = self.get_all_cols() 

130 selected_cols = self.request.GET.getlist("columns") + default_cols 

131 exclude_vals = [x for x in all_cols if x not in selected_cols] 

132 table.exclude = exclude_vals 

133 return table 

134 

135 

136class SkosConceptSchemeDetailView(DetailView): 

137 model = SkosConceptScheme 

138 template_name = "vocabs/skosconceptscheme_detail.html" 

139 

140 def get_context_data(self, **kwargs): 

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

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

143 return context 

144 

145 

146class SkosConceptSchemeCreate(BaseCreateView): 

147 model = SkosConceptScheme 

148 form_class = SkosConceptSchemeForm 

149 

150 @method_decorator(login_required) 

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

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

153 

154 

155class SkosConceptSchemeUpdate(BaseUpdateView): 

156 model = SkosConceptScheme 

157 form_class = SkosConceptSchemeForm 

158 

159 @method_decorator(login_required) 

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

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

162 

163 

164class SkosConceptSchemeDelete(DeleteView): 

165 model = SkosConceptScheme 

166 template_name = "vocabs/confirm_delete.html" 

167 success_url = reverse_lazy("vocabs:browse_schemes") 

168 

169 @method_decorator(login_required) 

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

171 return super(SkosConceptSchemeDelete, self).dispatch(*args, **kwargs) 

172 

173 

174################################################### 

175# SkosLabel 

176################################################### 

177 

178 

179class SkosLabelListView(GenericListView): 

180 model = SkosLabel 

181 table_class = SkosLabelTable 

182 filter_class = SkosLabelListFilter 

183 formhelper_class = SkosLabelFormHelper 

184 init_columns = [ 

185 "id", 

186 "label", 

187 ] 

188 

189 def get_all_cols(self): 

190 all_cols = list(self.table_class.base_columns.keys()) 

191 return all_cols 

192 

193 def get_context_data(self, **kwargs): 

194 context = super(SkosLabelListView, self).get_context_data() 

195 context[self.context_filter_name] = self.filter 

196 togglable_colums = [ 

197 x for x in self.get_all_cols() if x not in self.init_columns 

198 ] 

199 context["togglable_colums"] = togglable_colums 

200 return context 

201 

202 def get_table(self, **kwargs): 

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

204 RequestConfig( 

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

206 ).configure(table) 

207 default_cols = self.init_columns 

208 all_cols = self.get_all_cols() 

209 selected_cols = self.request.GET.getlist("columns") + default_cols 

210 exclude_vals = [x for x in all_cols if x not in selected_cols] 

211 table.exclude = exclude_vals 

212 return table 

213 

214 

215class SkosLabelDetailView(DetailView): 

216 model = SkosLabel 

217 template_name = "vocabs/skoslabel_detail.html" 

218 

219 

220class SkosLabelCreate(BaseCreateView): 

221 model = SkosLabel 

222 form_class = SkosLabelForm 

223 

224 @method_decorator(login_required) 

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

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

227 

228 

229class SkosLabelUpdate(BaseUpdateView): 

230 model = SkosLabel 

231 form_class = SkosLabelForm 

232 

233 @method_decorator(login_required) 

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

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

236 

237 

238class SkosLabelDelete(DeleteView): 

239 model = SkosLabel 

240 template_name = "vocabs/confirm_delete.html" 

241 success_url = reverse_lazy("vocabs:browse_skoslabels") 

242 

243 @method_decorator(login_required) 

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

245 return super(SkosLabelDelete, self).dispatch(*args, **kwargs)