From 96dcc9967c08461f119da5f6a477096633bf0ff3 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Fri, 22 Jun 2018 14:48:32 +0200 Subject: [PATCH 1/3] translate the fti title in @types endpoint --- src/plone/restapi/services/types/get.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plone/restapi/services/types/get.py b/src/plone/restapi/services/types/get.py index d61ca2f70c..9b252ecbe6 100644 --- a/src/plone/restapi/services/types/get.py +++ b/src/plone/restapi/services/types/get.py @@ -4,8 +4,9 @@ from Products.CMFCore.interfaces import IFolderish from Products.CMFCore.utils import getToolByName from zExceptions import Unauthorized -from zope.component import getUtility from zope.component import getMultiAdapter +from zope.component import getUtility +from zope.i18n import translate from zope.interface import implements from zope.publisher.interfaces import IPublishTraverse from zope.schema.interfaces import IVocabularyFactory @@ -85,7 +86,7 @@ def reply(self): return [ { '@id': '{}/@types/{}'.format(portal_url, fti.getId()), - 'title': fti.Title(), + 'title': translate(fti.Title(), context=self.request), 'addable': fti.getId() in allowed_types if can_add else False, } for fti in ftis ] From 5d23829865300b585cb35f48ae593d55b43b52ae Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Fri, 22 Jun 2018 17:54:00 +0200 Subject: [PATCH 2/3] test to show how content-type titles are being translated when using the Accept-Language header --- .../restapi/tests/test_services_types.py | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/src/plone/restapi/tests/test_services_types.py b/src/plone/restapi/tests/test_services_types.py index cb8cb04848..ec7c37cda0 100644 --- a/src/plone/restapi/tests/test_services_types.py +++ b/src/plone/restapi/tests/test_services_types.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- from plone import api -from plone.restapi.testing import PLONE_RESTAPI_DX_FUNCTIONAL_TESTING -from plone.restapi.testing import RelativeSession from plone.app.testing import setRoles -from plone.app.testing import TEST_USER_ID from plone.app.testing import SITE_OWNER_NAME from plone.app.testing import SITE_OWNER_PASSWORD +from plone.app.testing import TEST_USER_ID +from plone.restapi.testing import PLONE_RESTAPI_DX_FUNCTIONAL_TESTING +from plone.restapi.testing import RelativeSession + import transaction import unittest @@ -165,3 +166,39 @@ def test_addable_types_for_non_manager_user(self): self.assertEquals( len([a for a in response if a['addable']]), 0) + + +class TestServicesTypesTranslatedTitles(unittest.TestCase): + + layer = PLONE_RESTAPI_DX_FUNCTIONAL_TESTING + + def setUp(self): + self.app = self.layer['app'] + self.portal = self.layer['portal'] + self.portal_url = self.portal.absolute_url() + setRoles(self.portal, TEST_USER_ID, ['Manager']) + self.api_session = RelativeSession(self.portal_url) + self.api_session.headers.update({'Accept': 'application/json'}) + self.api_session.headers.update({'Accept-Language': 'es'}) + self.api_session.auth = (SITE_OWNER_NAME, SITE_OWNER_PASSWORD) + + transaction.commit() + + def test_get_types_translated(self): + response = self.api_session.get( + '{}/@types'.format(self.portal.absolute_url()) + ) + + self.assertEqual(response.status_code, 200) + + self.assertItemsEqual([ + u'Archivo', + u'Carpeta', + u'Colección', + u'DX Test Document', + u'Enlace', + u'Evento', + u'Imagen', + u'Noticia', + u'Página'], + [item['title'] for item in response.json()]) From 47255db04d4e149953cf03b611cc16c22d3d1701 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Fri, 22 Jun 2018 14:52:13 +0200 Subject: [PATCH 3/3] changelog --- CHANGES.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 4b202610b6..b8edabf536 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,9 @@ Changelog New Features: +- Translate FTI titles on `@types` endpoint. Fixes #337. + [erral] + - Include translated role title in `@roles` GET. [lgraf]