Coverage for vocabs/views.py: 83%
106 statements
« prev ^ index » next coverage.py v7.5.3, created at 2024-06-10 15:48 +0000
« 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
19class GenericListView(SingleTableView):
20 filter_class = None
21 formhelper_class = None
22 context_filter_name = "filter"
23 paginate_by = 25
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
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
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
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
52class SkosConceptDetailView(DetailView):
54 model = SkosConcept
55 template_name = "vocabs/skosconcept_detail.html"
58class SkosConceptListView(ListView):
60 model = SkosConcept
61 template_name = "vocabs/skosconcept_list.html"
64class SkosConceptCreate(CreateView):
66 model = SkosConcept
67 template_name = "vocabs/skosconcept_create.html"
68 form_class = SkosConceptForm
70 @method_decorator(login_required)
71 def dispatch(self, *args, **kwargs):
72 return super(SkosConceptCreate, self).dispatch(*args, **kwargs)
75class SkosConceptUpdate(UpdateView):
77 model = SkosConcept
78 form_class = SkosConceptForm
79 template_name = "vocabs/skosconcept_create.html"
81 @method_decorator(login_required)
82 def dispatch(self, *args, **kwargs):
83 return super(SkosConceptUpdate, self).dispatch(*args, **kwargs)
86class SkosConceptDelete(DeleteView):
87 model = SkosConcept
88 template_name = "vocabs/confirm_delete.html"
89 success_url = reverse_lazy("vocabs:browse_vocabs")
91 @method_decorator(login_required)
92 def dispatch(self, *args, **kwargs):
93 return super(SkosConceptDelete, self).dispatch(*args, **kwargs)
96#####################################################
97# ConceptScheme
98#####################################################
101class SkosConceptSchemeDetailView(DetailView):
103 model = SkosConceptScheme
104 template_name = "vocabs/skosconceptscheme_detail.html"
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
112class SkosConceptSchemeListView(ListView):
114 model = SkosConceptScheme
115 template_name = "vocabs/skosconceptscheme_list.html"
118class SkosConceptSchemeCreate(CreateView):
120 model = SkosConceptScheme
121 form_class = SkosConceptSchemeForm
122 template_name = "vocabs/skosconceptscheme_create.html"
124 @method_decorator(login_required)
125 def dispatch(self, *args, **kwargs):
126 return super(SkosConceptSchemeCreate, self).dispatch(*args, **kwargs)
129class SkosConceptSchemeUpdate(UpdateView):
131 model = SkosConceptScheme
132 form_class = SkosConceptSchemeForm
133 template_name = "vocabs/skosconceptscheme_create.html"
135 @method_decorator(login_required)
136 def dispatch(self, *args, **kwargs):
137 return super(SkosConceptSchemeUpdate, self).dispatch(*args, **kwargs)
140###################################################
141# SkosLabel
142###################################################
145class SkosLabelDetailView(DetailView):
147 model = SkosLabel
148 template_name = "vocabs/skoslabel_detail.html"
151class SkosLabelListView(ListView):
153 model = SkosLabel
154 template_name = "vocabs/skoslabel_list.html"
157class SkosLabelCreate(CreateView):
159 model = SkosLabel
160 template_name = "vocabs/skoslabel_create.html"
161 form_class = SkosLabelForm
163 @method_decorator(login_required)
164 def dispatch(self, *args, **kwargs):
165 return super(SkosLabelCreate, self).dispatch(*args, **kwargs)
168class SkosLabelUpdate(UpdateView):
170 model = SkosLabel
171 form_class = SkosLabelForm
172 template_name = "vocabs/skoslabel_create.html"
174 @method_decorator(login_required)
175 def dispatch(self, *args, **kwargs):
176 return super(SkosLabelUpdate, self).dispatch(*args, **kwargs)