4 |
4 |
5 @author: tc |
5 @author: tc |
6 ''' |
6 ''' |
7 |
7 |
8 from django.conf import settings |
8 from django.conf import settings |
9 from django.contrib.auth.decorators import login_required |
|
10 from django.utils.decorators import method_decorator |
9 from django.utils.decorators import method_decorator |
11 from django.views.generic import ListView, DetailView |
10 from django.views.generic import ListView, DetailView |
12 from p4l.forms import RecordFilterForm |
11 from p4l.forms import RecordFilterForm |
13 from p4l.models import Record |
12 from p4l.models import Record |
14 from p4l.utils import get_labels_for_uris |
13 from p4l.utils import get_labels_for_uris |
15 import json |
14 import json |
16 import logging |
15 import logging |
17 from p4l.semantictree.forms.forms import SubjectForm |
|
18 from django.utils.safestring import mark_safe |
|
19 |
16 |
20 |
17 |
21 logger = logging.getLogger(__name__) |
18 logger = logging.getLogger(__name__) |
22 |
19 |
23 class RecordListView(ListView): |
20 class RecordListView(ListView): |
24 |
21 |
25 queryset = Record.objects.select_related("language").prefetch_related('titles').distinct() # @UndefinedVariable |
22 queryset = Record.objects.select_related("language").prefetch_related('titles').distinct() # @UndefinedVariable |
26 paginate_by = settings.NB_RECORDS_BY_PAGE |
23 paginate_by = settings.NB_RECORDS_BY_PAGE |
27 template_name = "p4l/p4l_home.html" |
24 template_name = "p4l/p4l_home.html" |
28 form_class = RecordFilterForm |
25 form_class = RecordFilterForm |
29 |
|
30 @method_decorator(login_required) |
|
31 def dispatch(self, *args, **kwargs): |
|
32 return super(RecordListView, self).dispatch(*args, **kwargs) |
|
33 |
26 |
34 def get_context_data(self, **kwargs): |
27 def get_context_data(self, **kwargs): |
35 context = ListView.get_context_data(self, **kwargs) |
28 context = ListView.get_context_data(self, **kwargs) |
36 context['filter_form'] = self.form_class() |
29 context['filter_form'] = self.form_class() |
37 # Add filter params from GET params |
30 # Add filter params from GET params |
53 class RecordDetailView(DetailView): |
46 class RecordDetailView(DetailView): |
54 |
47 |
55 model = Record |
48 model = Record |
56 template_name = "p4l/p4l_record_view.html" |
49 template_name = "p4l/p4l_record_view.html" |
57 slug_field = "identifier" |
50 slug_field = "identifier" |
58 |
|
59 @method_decorator(login_required) |
|
60 def dispatch(self, *args, **kwargs): |
|
61 return super(RecordDetailView, self).dispatch(*args, **kwargs) |
|
62 |
51 |
63 def get_context_data(self, **kwargs): |
52 def get_context_data(self, **kwargs): |
64 context = DetailView.get_context_data(self, **kwargs) |
53 context = DetailView.get_context_data(self, **kwargs) |
65 # We get the language, "fr" by default |
54 # We get the language, "fr" by default |
66 lang = "fr" |
55 lang = "fr" |
166 PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> |
155 PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> |
167 SELECT DISTINCT ?uri ?label |
156 SELECT DISTINCT ?uri ?label |
168 WHERE { |
157 WHERE { |
169 ?uri a skos:Collection ; |
158 ?uri a skos:Collection ; |
170 skos:inScheme <http://skos.um.es/unescothes/CS000> ; |
159 skos:inScheme <http://skos.um.es/unescothes/CS000> ; |
171 rdfs:label ?label . |
160 skos:prefLabel|rdfs:label ?label . |
172 FILTER (lang(?label) = ?language). |
161 FILTER (lang(?label) = ?language). |
173 FILTER NOT EXISTS { [skos:member ?uri] } |
162 FILTER NOT EXISTS { [skos:member ?uri] } |
174 } |
163 } |
175 """, |
164 """, |
176 'data-childs-query': |
165 'data-childs-query': |