Skip to content

Commit 8faaea9

Browse files
committed
Add is_multilingual to @site endpoint
1 parent a7d1200 commit 8faaea9

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/plone/restapi/services/site/get.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from plone.event.utils import validated_timezone
66
from plone.i18n.interfaces import ILanguageSchema
77
from plone.registry.interfaces import IRegistry
8+
from plone.restapi import HAS_MULTILINGUAL
89
from plone.restapi.bbb import IImagingSchema
910
from plone.restapi.bbb import ISiteSchema
1011
from plone.restapi.interfaces import IExpandableElement
@@ -18,6 +19,10 @@
1819
from zope.interface import Interface
1920

2021

22+
if HAS_MULTILINGUAL:
23+
from plone.app.multilingual.interfaces import IPloneAppMultilingualInstalled
24+
25+
2126
@implementer(IExpandableElement)
2227
@adapter(Interface, Interface)
2328
class Site:
@@ -54,6 +59,11 @@ def __call__(self, expand=False):
5459
}
5560
)
5661

62+
if HAS_MULTILINGUAL and IPloneAppMultilingualInstalled.providedBy(self.request):
63+
result["site"]["plone.is_multilingual"] = True
64+
else:
65+
result["site"]["plone.is_multilingual"] = False
66+
5767
return result
5868

5969
def plone_timezone(self):

src/plone/restapi/tests/test_services_site.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
# -*- coding: utf-8 -*-
2+
from plone.app.multilingual.interfaces import IPloneAppMultilingualInstalled
23
from plone.app.testing import setRoles
34
from plone.app.testing import TEST_USER_ID
45
from plone.restapi.testing import PLONE_RESTAPI_DX_FUNCTIONAL_TESTING
6+
from plone.restapi.testing import PLONE_RESTAPI_DX_PAM_FUNCTIONAL_TESTING
57
from plone.restapi.testing import RelativeSession
68
from zope.component import getMultiAdapter
9+
from zope.interface import alsoProvides
710

811
import unittest
912

@@ -38,3 +41,29 @@ def test_get_site(self):
3841
self.assertIn("plone.available_languages", response.json())
3942
self.assertIn("plone.default_language", response.json())
4043
self.assertEqual(response.json()["plone.portal_timezone"], "UTC")
44+
self.assertEqual(response.json()["plone.is_multilingual"], False)
45+
46+
47+
class TestServicesSiteMultilingual(unittest.TestCase):
48+
49+
layer = PLONE_RESTAPI_DX_PAM_FUNCTIONAL_TESTING
50+
51+
def setUp(self):
52+
self.portal = self.layer["portal"]
53+
self.portal_url = self.portal.absolute_url()
54+
self.request = self.layer["request"]
55+
56+
self.api_session = RelativeSession(self.portal_url, test=self)
57+
self.api_session.headers.update({"Accept": "application/json"})
58+
59+
alsoProvides(self.layer["request"], IPloneAppMultilingualInstalled)
60+
61+
def tearDown(self):
62+
self.api_session.close()
63+
64+
def test_site_is_multilingual(self):
65+
response = self.api_session.get("/@site")
66+
67+
self.assertEqual(response.status_code, 200)
68+
self.assertIn("plone.is_multilingual", response.json())
69+
self.assertEqual(response.json()["plone.is_multilingual"], True)

0 commit comments

Comments
 (0)