Coverage for vocabs/views.py: 74%
153 statements
« prev ^ index » next coverage.py v7.6.0, created at 2024-07-27 11:19 +0000
« 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
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 ]
36 def get_all_cols(self):
37 all_cols = list(self.table_class.base_columns.keys())
38 return all_cols
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
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
62class SkosConceptDetailView(DetailView):
63 model = SkosConcept
64 template_name = "vocabs/skosconcept_detail.html"
67class SkosConceptCreate(BaseCreateView):
68 model = SkosConcept
69 form_class = SkosConceptForm
71 @method_decorator(login_required)
72 def dispatch(self, *args, **kwargs):
73 return super(SkosConceptCreate, self).dispatch(*args, **kwargs)
76class SkosConceptUpdate(BaseUpdateView):
77 model = SkosConcept
78 form_class = SkosConceptForm
80 @method_decorator(login_required)
81 def dispatch(self, *args, **kwargs):
82 return super(SkosConceptUpdate, self).dispatch(*args, **kwargs)
85class SkosConceptDelete(DeleteView):
86 model = SkosConcept
87 template_name = "vocabs/confirm_delete.html"
88 success_url = reverse_lazy("vocabs:browse_vocabs")
90 @method_decorator(login_required)
91 def dispatch(self, *args, **kwargs):
92 return super(SkosConceptDelete, self).dispatch(*args, **kwargs)
95#####################################################
96# ConceptScheme
97#####################################################
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 ]
110 def get_all_cols(self):
111 all_cols = list(self.table_class.base_columns.keys())
112 return all_cols
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
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
136class SkosConceptSchemeDetailView(DetailView):
137 model = SkosConceptScheme
138 template_name = "vocabs/skosconceptscheme_detail.html"
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
146class SkosConceptSchemeCreate(BaseCreateView):
147 model = SkosConceptScheme
148 form_class = SkosConceptSchemeForm
150 @method_decorator(login_required)
151 def dispatch(self, *args, **kwargs):
152 return super(SkosConceptSchemeCreate, self).dispatch(*args, **kwargs)
155class SkosConceptSchemeUpdate(BaseUpdateView):
156 model = SkosConceptScheme
157 form_class = SkosConceptSchemeForm
159 @method_decorator(login_required)
160 def dispatch(self, *args, **kwargs):
161 return super(SkosConceptSchemeUpdate, self).dispatch(*args, **kwargs)
164class SkosConceptSchemeDelete(DeleteView):
165 model = SkosConceptScheme
166 template_name = "vocabs/confirm_delete.html"
167 success_url = reverse_lazy("vocabs:browse_schemes")
169 @method_decorator(login_required)
170 def dispatch(self, *args, **kwargs):
171 return super(SkosConceptSchemeDelete, self).dispatch(*args, **kwargs)
174###################################################
175# SkosLabel
176###################################################
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 ]
189 def get_all_cols(self):
190 all_cols = list(self.table_class.base_columns.keys())
191 return all_cols
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
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
215class SkosLabelDetailView(DetailView):
216 model = SkosLabel
217 template_name = "vocabs/skoslabel_detail.html"
220class SkosLabelCreate(BaseCreateView):
221 model = SkosLabel
222 form_class = SkosLabelForm
224 @method_decorator(login_required)
225 def dispatch(self, *args, **kwargs):
226 return super(SkosLabelCreate, self).dispatch(*args, **kwargs)
229class SkosLabelUpdate(BaseUpdateView):
230 model = SkosLabel
231 form_class = SkosLabelForm
233 @method_decorator(login_required)
234 def dispatch(self, *args, **kwargs):
235 return super(SkosLabelUpdate, self).dispatch(*args, **kwargs)
238class SkosLabelDelete(DeleteView):
239 model = SkosLabel
240 template_name = "vocabs/confirm_delete.html"
241 success_url = reverse_lazy("vocabs:browse_skoslabels")
243 @method_decorator(login_required)
244 def dispatch(self, *args, **kwargs):
245 return super(SkosLabelDelete, self).dispatch(*args, **kwargs)