diff --git a/pyramid_skosprovider/views.py b/pyramid_skosprovider/views.py index efdeffb..e7fe9f3 100644 --- a/pyramid_skosprovider/views.py +++ b/pyramid_skosprovider/views.py @@ -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() ] @@ -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 diff --git a/tests/fixtures/data.py b/tests/fixtures/data.py index 9bc9ecc..2915c25 100644 --- a/tests/fixtures/data.py +++ b/tests/fixtures/data.py @@ -7,7 +7,8 @@ ) from skosprovider.skos import ( - ConceptScheme + ConceptScheme, + Label ) larch = { @@ -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') + ] ) ) diff --git a/tests/test_functional.py b/tests/test_functional.py index 3ecf73d..10347de 100644 --- a/tests/test_functional.py +++ b/tests/test_functional.py @@ -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', diff --git a/tests/test_views.py b/tests/test_views.py index 1dc7e9d..411b169 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -16,7 +16,8 @@ ) from skosprovider.skos import ( - Concept + Concept, + Label ) class ProviderViewTests(unittest.TestCase): @@ -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