Skip to content

Commit

Permalink
Enable language parameter for conceptschemes. Refs #14
Browse files Browse the repository at this point in the history
  • Loading branch information
koenedaele committed Mar 2, 2015
1 parent 48b2530 commit 710ca8c
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 7 deletions.
6 changes: 4 additions & 2 deletions pyramid_skosprovider/views.py
Expand Up @@ -60,11 +60,12 @@ def get_uri(self):

@view_config(route_name='skosprovider.conceptschemes', request_method='GET')
def get_conceptschemes(self):
language = self.request.params.get('language', self.request.locale_name)
return [
{
'id': p.get_vocabulary_id(),
'uri': p.concept_scheme.uri,
'label': p.concept_scheme.label().label if p.concept_scheme.label() else None,
'label': p.concept_scheme.label(language).label if p.concept_scheme.label(language) else None,
'subject': p.metadata['subject'] if p.metadata['subject'] else []
} for p in self.skos_registry.get_providers()
]
Expand All @@ -75,10 +76,11 @@ def get_conceptscheme(self):
provider = self.skos_registry.get_provider(scheme_id)
if not provider:
return HTTPNotFound()
language = self.request.params.get('language', self.request.locale_name)
return {
'id': provider.get_vocabulary_id(),
'uri': provider.concept_scheme.uri,
'label': provider.concept_scheme.label().label if provider.concept_scheme.label() else None,
'label': provider.concept_scheme.label(language).label if provider.concept_scheme.label(language) else None,
'subject': provider.metadata['subject'] if provider.metadata['subject'] else [],
'labels': provider.concept_scheme.labels,
'notes': provider.concept_scheme.notes
Expand Down
9 changes: 7 additions & 2 deletions tests/fixtures/data.py
Expand Up @@ -7,7 +7,8 @@
)

from skosprovider.skos import (
ConceptScheme
ConceptScheme,
Label
)

larch = {
Expand Down Expand Up @@ -64,6 +65,10 @@
{'id': 'TREES', 'default_language': 'nl'},
[larch, chestnut, species],
concept_scheme=ConceptScheme(
uri='http://python.com/trees'
uri='http://python.com/trees',
labels=[
Label('Different types of trees', 'prefLabel', 'en'),
Label('Verschillende soorten bomen', 'prefLabel', 'nl')
]
)
)
19 changes: 19 additions & 0 deletions tests/test_functional.py
Expand Up @@ -89,6 +89,25 @@ def test_get_conceptschemes_json(self):
self.assertIsInstance(data, list)
self.assertEqual(len(data), 1)

def test_get_conceptscheme_json(self):
res = self.testapp.get(
'/conceptschemes/TREES',
{},
{ascii_native_('Accept'): ascii_native_('application/json')})
self.assertEqual('200 OK', res.status)
self.assertIn('application/json', res.headers['Content-Type'])
data = json.loads(res.body.decode('utf-8'))
self.assertIsInstance(data, dict)
self.assertIn('id', data)
self.assertIn('uri', data)
self.assertIn('subject', data)
self.assertIn('label', data)
self.assertIn('labels', data)
self.assertEqual(len(data['labels']), 2)
for l in data['labels']:
self.assertIsInstance(l, dict)
self.assertIn('notes', data)

def test_get_conceptschemes_trees_cs_json(self):
res = self.testapp.get(
'/conceptschemes/TREES/c',
Expand Down
10 changes: 7 additions & 3 deletions tests/test_views.py
Expand Up @@ -16,7 +16,8 @@
)

from skosprovider.skos import (
Concept
Concept,
Label
)

class ProviderViewTests(unittest.TestCase):
Expand Down Expand Up @@ -118,9 +119,12 @@ def test_get_conceptscheme(self):
{
'id': 'TREES',
'uri': 'http://python.com/trees',
'label': None,
'label': 'Different types of trees',
'subject': [],
'labels': [],
'labels': [
Label('Different types of trees', 'prefLabel', 'en'),
Label('Verschillende soorten bomen', 'prefLabel', 'nl')
],
'notes': []
},
cs
Expand Down

0 comments on commit 710ca8c

Please sign in to comment.