| author | ymh <ymh.work@gmail.com> |
| Fri, 20 Sep 2013 22:21:48 +0200 | |
| changeset 113 | c05567404888 |
| parent 99 | 0d54489e8b26 |
| child 117 | 0a4e7d6ebe80 |
| permissions | -rw-r--r-- |
| 1 | 1 |
# -*- coding: utf-8 -*- |
2 |
''' |
|
3 |
Created on Aug 27, 2013 |
|
4 |
||
5 |
@author: tc |
|
6 |
''' |
|
| 93 | 7 |
from datetime import datetime |
|
113
c05567404888
First version of indexation. Replace the list view by a search view
ymh <ymh.work@gmail.com>
parents:
99
diff
changeset
|
8 |
import json |
|
c05567404888
First version of indexation. Replace the list view by a search view
ymh <ymh.work@gmail.com>
parents:
99
diff
changeset
|
9 |
import logging |
|
c05567404888
First version of indexation. Replace the list view by a search view
ymh <ymh.work@gmail.com>
parents:
99
diff
changeset
|
10 |
|
| 1 | 11 |
from django.conf import settings |
| 92 | 12 |
from django.shortcuts import redirect, get_object_or_404 |
|
113
c05567404888
First version of indexation. Replace the list view by a search view
ymh <ymh.work@gmail.com>
parents:
99
diff
changeset
|
13 |
from django.views.generic import DetailView, View |
|
c05567404888
First version of indexation. Replace the list view by a search view
ymh <ymh.work@gmail.com>
parents:
99
diff
changeset
|
14 |
|
|
26
a0e152dd1fad
first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
20
diff
changeset
|
15 |
from p4l.models import Record |
|
a0e152dd1fad
first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
20
diff
changeset
|
16 |
from p4l.utils import get_labels_for_uris |
| 1 | 17 |
|
| 7 | 18 |
|
| 1 | 19 |
logger = logging.getLogger(__name__) |
20 |
||
| 7 | 21 |
|
22 |
class RecordDetailView(DetailView): |
|
23 |
||
24 |
model = Record |
|
25 |
template_name = "p4l/p4l_record_view.html" |
|
| 30 | 26 |
slug_field = "identifier" |
| 7 | 27 |
|
| 17 | 28 |
def get_context_data(self, **kwargs): |
29 |
context = DetailView.get_context_data(self, **kwargs) |
|
| 20 | 30 |
# We get the language, "fr" by default |
31 |
lang = "fr" |
|
32 |
if "lang" in self.request.GET: |
|
33 |
lang = self.request.GET["lang"] |
|
34 |
elif hasattr(self.request, "LANGUAGE_CODE") and self.request.LANGUAGE_CODE in ["fr","en","es"]: |
|
35 |
lang = self.request.LANGUAGE_CODE |
|
| 17 | 36 |
# self.object is the record entry |
37 |
# We get the subjects'labels with the Thesaurus repository |
|
38 |
uri_list = [s.uri for s in self.object.subjects.all()] |
|
| 20 | 39 |
uris_labels = get_labels_for_uris(uri_list, "http://skos.um.es/unescothes/CS000", lang, False) |
| 17 | 40 |
context['subjects_labels'] = uris_labels |
41 |
# We get the themes'labels with the Themes repository |
|
42 |
uri_list = [s.uri for s in self.object.themes.all()] |
|
| 20 | 43 |
uris_labels = get_labels_for_uris(uri_list, "http://www.iiep.unesco.org/plan4learning/scheme/Themes", lang, False) |
| 17 | 44 |
context['themes_labels'] = uris_labels |
45 |
# We get the countries'labels with the Thesaurus repository |
|
46 |
uri_list = [s.uri for s in self.object.countries.all()] |
|
| 20 | 47 |
uris_labels = get_labels_for_uris(uri_list, "http://skos.um.es/unescothes/CS000/Countries", lang, False) |
| 17 | 48 |
context['countries_labels'] = uris_labels |
49 |
# We get the languages'labels with the Languages repository |
|
50 |
if self.object.language: |
|
51 |
uri_list = [self.object.language.uri] |
|
| 20 | 52 |
uris_labels = get_labels_for_uris(uri_list, "http://www.iiep.unesco.org/plan4learning/scheme/Languages", lang, False) |
| 17 | 53 |
context['language_label'] = uris_labels[self.object.language.uri] |
54 |
# We get the other languages'labels with the Languages repository |
|
55 |
uri_list = [s.uri for s in self.object.otherLanguages.all()] |
|
| 20 | 56 |
uris_labels = get_labels_for_uris(uri_list, "http://www.iiep.unesco.org/plan4learning/scheme/Languages", lang, False) |
| 17 | 57 |
context['otherLanguages_labels'] = uris_labels |
58 |
# We get the project'labels with the Projects repository |
|
59 |
uri_list = [s.uri for s in self.object.projectNames.all()] |
|
60 |
uris_labels = get_labels_for_uris(uri_list, "http://www.iiep.unesco.org/plan4learning/scheme/Projects", None, True) |
|
61 |
context['projects_labels'] = uris_labels |
|
62 |
# We get the subjectCorporateBodies'labels with the Organizations repository |
|
63 |
uri_list = [s.uri for s in self.object.subjectCorporateBodies.all()] |
|
64 |
uris_labels = get_labels_for_uris(uri_list, "http://www.iiep.unesco.org/plan4learning/scheme/Organizations", None, True) |
|
65 |
context['subjectCorporateBodies_labels'] = uris_labels |
|
66 |
# We get the corporateAuthors'labels with the Organizations repository |
|
67 |
uri_list = [s.uri for s in self.object.corporateAuthors.all()] |
|
68 |
uris_labels = get_labels_for_uris(uri_list, "http://www.iiep.unesco.org/plan4learning/scheme/Organizations", None, True) |
|
69 |
context['corporateAuthors_labels'] = uris_labels |
|
70 |
# We get the recordType'labels with the DocumentType repository |
|
71 |
if self.object.recordType: |
|
72 |
uri_list = [self.object.recordType] |
|
| 20 | 73 |
uris_labels = get_labels_for_uris(uri_list, "http://www.iiep.unesco.org/plan4learning/scheme/DocumentType", lang, False) |
| 17 | 74 |
context['recordType_label'] = uris_labels[self.object.recordType] |
| 99 | 75 |
# Here, in the future, there will be the request for audiences thesaurus |
76 |
context['audiences_labels'] = {} |
|
77 |
#uri_list = [s.uri for s in self.object.audiences.all()] |
|
78 |
#uris_labels = get_labels_for_uris(uri_list, "http://www.iiep.unesco.org/plan4learning/scheme/Audiences", lang, False) |
|
79 |
#context['audiences_labels'] = uris_labels |
|
| 7 | 80 |
|
| 17 | 81 |
return context |
| 7 | 82 |
|
| 34 | 83 |
class RecordEditView(DetailView): |
| 29 | 84 |
http_method_names = ['get'] |
85 |
template_name = 'p4l/record_update_form.html' |
|
| 34 | 86 |
model = Record |
87 |
slug_field = "identifier" |
|
|
26
a0e152dd1fad
first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
20
diff
changeset
|
88 |
|
| 34 | 89 |
def get_context_data(self, **kwargs): |
90 |
context = DetailView.get_context_data(self, **kwargs) |
|
91 |
# We get the language, "fr" by default |
|
92 |
lang = "fr" |
|
93 |
if "lang" in self.request.GET: |
|
94 |
lang = self.request.GET["lang"] |
|
95 |
elif hasattr(self.request, "LANGUAGE_CODE") and self.request.LANGUAGE_CODE in ["fr","en","es"]: |
|
96 |
lang = self.request.LANGUAGE_CODE |
|
97 |
||
98 |
uri_labels = get_labels_for_uris([s.uri for s in self.object.subjects.all()], "http://skos.um.es/unescothes/CS000", lang, False) |
|
99 |
uri_labels.update(get_labels_for_uris([s.uri for s in self.object.themes.all()], "http://www.iiep.unesco.org/plan4learning/scheme/Themes", lang, False)) |
|
100 |
uri_labels.update(get_labels_for_uris([s.uri for s in self.object.countries.all()], "http://skos.um.es/unescothes/CS000/Countries", lang, False)) |
|
101 |
uri_labels.update(get_labels_for_uris([self.object.language.uri] if self.object.language else [], "http://www.iiep.unesco.org/plan4learning/scheme/Languages", lang, False)) |
|
102 |
uri_labels.update(get_labels_for_uris([s.uri for s in self.object.otherLanguages.all()], "http://www.iiep.unesco.org/plan4learning/scheme/Languages", lang, False)) |
|
103 |
uri_labels.update(get_labels_for_uris([s.uri for s in self.object.projectNames.all()], "http://www.iiep.unesco.org/plan4learning/scheme/Projects", None, True)) |
|
104 |
uri_labels.update(get_labels_for_uris([s.uri for s in self.object.subjectCorporateBodies.all()], "http://www.iiep.unesco.org/plan4learning/scheme/Organizations", None, True)) |
|
105 |
uri_labels.update(get_labels_for_uris([s.uri for s in self.object.corporateAuthors.all()], "http://www.iiep.unesco.org/plan4learning/scheme/Organizations", None, True)) |
|
106 |
uri_labels.update(get_labels_for_uris([self.object.recordType] if self.object.recordType else [], "http://www.iiep.unesco.org/plan4learning/scheme/DocumentType", lang, False)) |
|
107 |
context['uri_labels'] = json.dumps(uri_labels) |
|
108 |
||
| 60 | 109 |
# lang must be like "XX" in the sparql request |
110 |
lang = '"' + lang + '"' |
|
| 57 | 111 |
query_dicts = { |
112 |
'subjects': { |
|
113 |
'dataurl': settings.SPARQL_QUERY_ENDPOINT, |
|
| 60 | 114 |
'dataquery': settings.SPARQL_SUBJECT_QUERIES["filter"] % (lang, lang), |
115 |
'datarootquery': settings.SPARQL_SUBJECT_QUERIES["root"] % lang, |
|
116 |
'datachildsquery': settings.SPARQL_SUBJECT_QUERIES["childs"] % lang, |
|
| 57 | 117 |
'datachildcountquery': settings.SPARQL_SUBJECT_QUERIES["child-count"] |
118 |
}, |
|
119 |
'themes' : { |
|
120 |
'dataurl': settings.SPARQL_QUERY_ENDPOINT, |
|
| 60 | 121 |
'dataquery': settings.SPARQL_THEME_QUERIES["filter"] % (lang, lang), |
122 |
'datarootquery': settings.SPARQL_THEME_QUERIES["root"] % lang, |
|
123 |
'datachildsquery': settings.SPARQL_THEME_QUERIES["childs"] % lang, |
|
| 57 | 124 |
'datachildcountquery': settings.SPARQL_THEME_QUERIES["child-count"] |
| 61 | 125 |
}, |
126 |
'countries' : { |
|
127 |
'dataurl': settings.SPARQL_QUERY_ENDPOINT, |
|
128 |
'dataquery': settings.SPARQL_COUNTRY_QUERIES["filter"] % (lang, lang), |
|
129 |
'datarootquery': settings.SPARQL_COUNTRY_QUERIES["root"] % lang, |
|
130 |
'datachildsquery': settings.SPARQL_COUNTRY_QUERIES["childs"] % lang, |
|
131 |
'datachildcountquery': settings.SPARQL_COUNTRY_QUERIES["child-count"] |
|
132 |
}, |
|
133 |
'languages' : { |
|
134 |
'dataurl': settings.SPARQL_QUERY_ENDPOINT, |
|
135 |
'dataquery': settings.SPARQL_LANGUAGE_QUERIES["filter"] % (lang, lang), |
|
136 |
'datarootquery': settings.SPARQL_LANGUAGE_QUERIES["root"] % lang, |
|
137 |
'datachildsquery': "", |
|
138 |
'datachildcountquery': "" |
|
139 |
}, |
|
140 |
'projects' : { |
|
141 |
'dataurl': settings.SPARQL_QUERY_ENDPOINT, |
|
142 |
'dataquery': settings.SPARQL_PROJECT_QUERIES["filter"], |
|
143 |
'datarootquery': settings.SPARQL_PROJECT_QUERIES["root"], |
|
144 |
'datachildsquery': "", |
|
145 |
'datachildcountquery': "" |
|
146 |
}, |
|
147 |
'organizations' : { |
|
148 |
'dataurl': settings.SPARQL_QUERY_ENDPOINT, |
|
149 |
'dataquery': settings.SPARQL_ORGANIZATION_QUERIES["filter"], |
|
150 |
'datarootquery': settings.SPARQL_ORGANIZATION_QUERIES["root"], |
|
151 |
'datachildsquery': "", |
|
152 |
'datachildcountquery': "" |
|
|
62
8433e12362e0
angular for simple sparql and checkbox. Languages updated
cavaliet
parents:
61
diff
changeset
|
153 |
}, |
|
8433e12362e0
angular for simple sparql and checkbox. Languages updated
cavaliet
parents:
61
diff
changeset
|
154 |
'types' : { |
|
8433e12362e0
angular for simple sparql and checkbox. Languages updated
cavaliet
parents:
61
diff
changeset
|
155 |
'dataurl': settings.SPARQL_QUERY_ENDPOINT, |
|
8433e12362e0
angular for simple sparql and checkbox. Languages updated
cavaliet
parents:
61
diff
changeset
|
156 |
'dataquery': settings.SPARQL_TYPE_QUERIES["filter"] % (lang, lang), |
|
8433e12362e0
angular for simple sparql and checkbox. Languages updated
cavaliet
parents:
61
diff
changeset
|
157 |
'datarootquery': settings.SPARQL_TYPE_QUERIES["root"] % lang, |
|
8433e12362e0
angular for simple sparql and checkbox. Languages updated
cavaliet
parents:
61
diff
changeset
|
158 |
'datachildsquery': "", |
|
8433e12362e0
angular for simple sparql and checkbox. Languages updated
cavaliet
parents:
61
diff
changeset
|
159 |
'datachildcountquery': "" |
| 99 | 160 |
}, |
161 |
'audiences': { |
|
162 |
'dataurl': settings.SPARQL_QUERY_ENDPOINT, |
|
163 |
'dataquery': settings.SPARQL_AUDIENCE_QUERIES["filter"], |
|
164 |
'datarootquery': settings.SPARQL_AUDIENCE_QUERIES["root"], |
|
165 |
'datachildsquery': settings.SPARQL_AUDIENCE_QUERIES["childs"], |
|
166 |
'datachildcountquery': settings.SPARQL_AUDIENCE_QUERIES["child-count"] |
|
| 57 | 167 |
} |
168 |
} |
|
169 |
context['query_dicts'] = json.dumps(query_dicts) |
|
| 38 | 170 |
|
| 70 | 171 |
# Languages list used in drop down list |
172 |
context['languages_list'] = json.dumps(settings.LANGUAGES_LIST) |
|
| 74 | 173 |
|
| 34 | 174 |
return context |
| 92 | 175 |
|
176 |
||
| 93 | 177 |
class RecordNewView(View): |
178 |
def get(self, request, *args, **kwargs): |
|
179 |
rec = Record() |
|
180 |
rec.identifier = "T" + datetime.now().strftime("%Y%m%d%H%M%S") |
|
181 |
rec.uri = "http://www.iiep.unesco.org/plan4learning/record/" + rec.identifier |
|
182 |
rec.save() |
|
183 |
return redirect('p4l_record_edit', rec.identifier) |
|
184 |
||
185 |
||
| 92 | 186 |
class RecordDeleteView(View): |
187 |
def get(self, request, slug, **kwargs): |
|
188 |
rec = get_object_or_404(Record, identifier=slug) |
|
189 |
rec.delete() |
|
190 |
return redirect('p4l_home') |
|
| 34 | 191 |