| author | verrierj |
| Mon, 02 Jan 2012 16:27:01 +0100 | |
| changeset 319 | c45aed3c7a89 |
| parent 315 | 877f89ec1efa |
| child 886 | 3ccedd271e36 |
| permissions | -rw-r--r-- |
| 319 | 1 |
from django.http import HttpResponse, HttpResponseForbidden |
2 |
from django.utils.translation import ugettext as _ |
|
3 |
from ldt.ldt_utils.models import Project |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
4 |
from ldt.ldt_utils.projectserializer import ProjectSerializer |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
5 |
import ldt.auth as ldt_auth |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
6 |
import logging |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
7 |
import lxml.etree |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
8 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
9 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
10 |
def project_annotations_rdf(request, ldt_id): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
11 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
12 |
project = Project.safe_objects.get(ldt_id=ldt_id); #@UndefinedVariable |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
13 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
14 |
if not ldt_auth.check_access(request.user, project): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
15 |
return HttpResponseForbidden(_("You can not access this project")) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
16 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
17 |
mimetype = request.REQUEST.get("mimetype") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
18 |
if mimetype is None: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
19 |
mimetype = "application/rdf+xml; charset=utf-8" |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
20 |
else: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
21 |
mimetype = mimetype.encode("utf-8") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
22 |
if "charset" not in mimetype: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
23 |
mimetype += "; charset=utf-8" |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
24 |
resp = HttpResponse(mimetype=mimetype) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
25 |
resp['Cache-Control'] = 'no-cache, must-revalidate' |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
26 |
resp['Pragma'] = 'no-cache' |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
27 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
28 |
ps = ProjectSerializer(project, from_contents=False, from_display=True) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
29 |
annotations = ps.get_annotations(first_cutting=True) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
30 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
31 |
rdf_ns = u"http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
32 |
dc_ns = u"http://purl.org/dc/elements/1.1/" |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
33 |
rdf = u"{%s}" % rdf_ns |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
34 |
dc = u"{%s}" % dc_ns |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
35 |
nsmap = {u'rdf' : rdf_ns, u'dc':dc_ns} |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
36 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
37 |
rdf_root = lxml.etree.Element(rdf + u"RDF", nsmap=nsmap) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
38 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
39 |
logging.debug("RDF annotations : " + repr(annotations)) #@UndefinedVariable |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
40 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
41 |
for annotation in annotations: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
42 |
uri = u"" |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
43 |
if 'uri' in annotation and annotation['uri']: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
44 |
uri = unicode(annotation['uri']) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
45 |
annot_desc = lxml.etree.SubElement(rdf_root, rdf + u"Description") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
46 |
annot_desc.set(rdf + u'about', uri) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
47 |
if annotation['title']: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
48 |
lxml.etree.SubElement(annot_desc, dc + 'title').text = lxml.etree.CDATA(unicode(annotation['title'])) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
49 |
if annotation['desc']: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
50 |
lxml.etree.SubElement(annot_desc, dc + 'description').text = lxml.etree.CDATA(unicode(annotation['desc'])) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
51 |
if annotation['tags']: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
52 |
for tag in annotation['tags']: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
53 |
lxml.etree.SubElement(annot_desc, dc + 'subject').text = lxml.etree.CDATA(unicode(tag)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
54 |
lxml.etree.SubElement(annot_desc, dc + 'coverage').text = u"start=%s, duration=%s" % (annotation['begin'], annotation['duration']) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
55 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
56 |
resp.write(u"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
57 |
resp.write(u"<!DOCTYPE rdf:RDF PUBLIC \"-//DUBLIN CORE//DCMES DTD 2002/07/31//EN\" \"http://dublincore.org/documents/2002/07/31/dcmes-xml/dcmes-xml-dtd.dtd\">\n") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
58 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
59 |
resp.write(lxml.etree.tostring(rdf_root, xml_declaration=False, encoding="utf-8", pretty_print=True)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
60 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
61 |
return resp |