AtramhasisVoid.rdf_void_turtle()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 7
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 1
nop 1
1
import os
2
3
from pyramid.renderers import render
4
from pyramid.response import FileResponse
5
from pyramid.response import Response
6
from pyramid.view import view_config
7
from pyramid.view import view_defaults
8
from pyramid_skosprovider.views import ProviderView
9
from skosprovider_rdf import utils
10
11
from atramhasis.audit import audit
12
from atramhasis.errors import ConceptNotFoundException
13
from atramhasis.errors import ConceptSchemeNotFoundException
14
from atramhasis.errors import SkosRegistryNotFoundException
15
from atramhasis.rdf import void_dumper
16
17
18
@view_defaults()
19
class AtramhasisVoid:
20
21
    def __init__(self, request):
22
        self.request = request
23
        if hasattr(request, 'skos_registry') and request.skos_registry is not None:
24
            self.skos_registry = self.request.skos_registry
25
        else:
26
            raise SkosRegistryNotFoundException()   # pragma: no cover
27
28
    @view_config(route_name='atramhasis.rdf_void_turtle_ext')
29
    def rdf_void_turtle(self):
30
        graph = void_dumper(self.request, self.skos_registry)
31
        response = Response(content_type='text/turtle')
32
        response.text = graph.serialize(format='turtle')
33
        response.content_disposition = 'attachment; filename="void.ttl"'
34
        return response
35
36
37
@view_defaults()
38
class AtramhasisRDF:
39
40
    def __init__(self, request):
41
        self.request = request
42
        self.scheme_id = self.request.matchdict['scheme_id']
43
        if hasattr(request, 'skos_registry') and request.skos_registry is not None:
44
            self.skos_registry = self.request.skos_registry
45
        else:
46
            raise SkosRegistryNotFoundException()   # pragma: no cover
47
        self.provider = self.skos_registry.get_provider(self.scheme_id)
48
        if not self.provider:
49
            raise ConceptSchemeNotFoundException(self.scheme_id)   # pragma: no cover
50
        if 'c_id' in self.request.matchdict.keys():
51
            self.c_id = self.request.matchdict['c_id']
52
            if not self.provider.get_by_id(self.c_id):
53
                raise ConceptNotFoundException(self.c_id)
54
55
    @audit
56
    @view_config(route_name='skosprovider.conceptscheme.cs', accept='application/rdf+xml')
57
    @view_config(route_name='skosprovider.conceptscheme.cs.rdf')
58
    def rdf_full_export(self):
59
        dump_location = self.request.registry.settings['atramhasis.dump_location']
60
        filename = os.path.join(dump_location, '%s-full.rdf' % self.scheme_id)
61
        return FileResponse(
62
            filename,
63
            request=self.request,
64
            content_type='application/rdf+xml',
65
            cache_max_age=86400
66
        )
67
68
    @audit
69
    @view_config(route_name='skosprovider.conceptscheme.cs', accept='text/turtle')
70
    @view_config(route_name='skosprovider.conceptscheme.cs', accept='application/x-turtle')
71
    @view_config(route_name='skosprovider.conceptscheme.cs.ttl')
72
    def rdf_full_export_turtle(self):
73
        dump_location = self.request.registry.settings['atramhasis.dump_location']
74
        filename = os.path.join(dump_location, '%s-full.ttl' % self.scheme_id)
75
        return FileResponse(
76
            filename,
77
            request=self.request,
78
            content_type='text/turtle',
79
            cache_max_age=86400
80
        )
81
82
    @audit
83
    @view_config(route_name='skosprovider.conceptscheme', accept='application/rdf+xml')
84
    @view_config(route_name='skosprovider.conceptscheme.rdf')
85
    def rdf_conceptscheme_export(self):
86
        graph = utils.rdf_conceptscheme_dumper(self.provider)
87
        response = Response(content_type='application/rdf+xml')
88
        response.text = graph.serialize(format='xml')
89
        response.content_disposition = 'attachment; filename="{}.rdf"'.format(str(self.scheme_id))
90
        return response
91
92
    @view_config(route_name='skosprovider.conceptscheme', accept='text/turtle')
93
    @view_config(route_name='skosprovider.conceptscheme', accept='application/x-turtle')
94
    @view_config(route_name='skosprovider.conceptscheme.ttl')
95
    def rdf_conceptscheme_export_turtle(self):
96
        graph = utils.rdf_conceptscheme_dumper(self.provider)
97
        response = Response(content_type='text/turtle')
98
        response.text = graph.serialize(format='turtle')
99
        response.content_disposition = 'attachment; filename="{}.ttl"'.format(str(self.scheme_id))
100
        return response
101
102
    @audit
103
    @view_config(route_name='skosprovider.c', accept='application/rdf+xml')
104
    @view_config(route_name='skosprovider.c.rdf')
105
    def rdf_individual_export(self):
106
        graph = utils.rdf_c_dumper(self.provider, self.c_id)
107
        response = Response(content_type='application/rdf+xml')
108
        response.text = graph.serialize(format='xml')
109
        response.content_disposition = 'attachment; filename="{}.rdf"'.format(str(self.c_id))
110
        return response
111
112
    @audit
113
    @view_config(route_name='skosprovider.c', accept='text/turtle')
114
    @view_config(route_name='skosprovider.c', accept='application/x-turtle')
115
    @view_config(route_name='skosprovider.c.ttl')
116
    def rdf_individual_export_turtle(self):
117
        graph = utils.rdf_c_dumper(self.provider, self.c_id)
118
        response = Response(content_type='text/turtle')
119
        response.text = graph.serialize(format='turtle')
120
        response.content_disposition = 'attachment; filename="{}.ttl"'.format(str(self.c_id))
121
        return response
122
123
    @audit
124
    @view_config(route_name='skosprovider.conceptscheme', permission='view', accept='application/ld+json')
125
    @view_config(route_name='skosprovider.conceptscheme.jsonld', permission='view')
126
    def get_conceptscheme_jsonld(self):
127
        conceptscheme = ProviderView(self.request).get_conceptscheme_jsonld()
128
        response = Response(content_type='application/ld+json')
129
        response.text = render('skosjsonld', conceptscheme, self.request)
130
        response.content_disposition = 'attachment; filename="{}.jsonld"'.format(str(self.scheme_id))
131
        return response
132
133
    @audit
134
    @view_config(route_name='skosprovider.c', permission='view', accept='application/ld+json')
135
    @view_config(route_name='skosprovider.c.jsonld', permission='view')
136
    def get_concept(self):
137
        concept = ProviderView(self.request).get_concept()
138
        response = Response(content_type='application/ld+json')
139
        response.text = render('skosjsonld', concept, self.request)
140
        response.content_disposition = 'attachment; filename="{}.jsonld"'.format(str(self.c_id))
141
        return response
142