Skip to content

Commit

Permalink
Merge e57d2c4 into 4a3ad2b
Browse files Browse the repository at this point in the history
  • Loading branch information
tiberiuichim committed Dec 15, 2020
2 parents 4a3ad2b + e57d2c4 commit 8588bc8
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 11 deletions.
21 changes: 16 additions & 5 deletions src/plone/restapi/serializer/dxcontent.py
Expand Up @@ -2,7 +2,6 @@
from AccessControl import getSecurityManager
from Acquisition import aq_inner
from Acquisition import aq_parent
from Products.CMFPlone.utils import base_hasattr
from plone.autoform.interfaces import READ_PERMISSIONS_KEY
from plone.dexterity.interfaces import IDexterityContainer
from plone.dexterity.interfaces import IDexterityContent
Expand All @@ -20,6 +19,7 @@
from plone.rfc822.interfaces import IPrimaryFieldInfo
from plone.supermodel.utils import mergedTaggedValueDict
from Products.CMFCore.utils import getToolByName
from Products.CMFPlone.utils import base_hasattr
from zope.component import adapter
from zope.component import getMultiAdapter
from zope.component import queryMultiAdapter
Expand Down Expand Up @@ -80,7 +80,8 @@ def __call__(self, version=None, include_items=True):

# Insert field values
for schema in iterSchemata(self.context):
read_permissions = mergedTaggedValueDict(schema, READ_PERMISSIONS_KEY)
read_permissions = mergedTaggedValueDict(
schema, READ_PERMISSIONS_KEY)

for name, field in getFields(schema).items():

Expand Down Expand Up @@ -108,7 +109,8 @@ def __call__(self, version=None, include_items=True):

def _get_workflow_state(self, obj):
wftool = getToolByName(self.context, "portal_workflow")
review_state = wftool.getInfoFor(ob=obj, name="review_state", default=None)
review_state = wftool.getInfoFor(
ob=obj, name="review_state", default=None)
return review_state

def check_permission(self, permission_name, obj):
Expand Down Expand Up @@ -139,7 +141,8 @@ def _build_query(self):
return query

def __call__(self, version=None, include_items=True):
folder_metadata = super(SerializeFolderToJson, self).__call__(version=version)
folder_metadata = super(SerializeFolderToJson,
self).__call__(version=version)

folder_metadata.update({"is_folderish": True})
result = folder_metadata
Expand All @@ -166,9 +169,17 @@ def __call__(self, version=None, include_items=True):
)(fullobjects=True)["items"]
else:
result["items"] = [
getMultiAdapter((brain, self.request), ISerializeToJsonSummary)()
getMultiAdapter((brain, self.request),
ISerializeToJsonSummary)()
for brain in batch
]

page = self.context.getDefaultPage()
if page:
child = self.context._getOb(page)
result['default_page'] = getMultiAdapter(
(child, self.request), ISerializeToJson)()

return result


Expand Down
14 changes: 13 additions & 1 deletion src/plone/restapi/services/content/get.py
@@ -1,14 +1,26 @@
# -*- coding: utf-8 -*-
from plone.restapi.interfaces import ISerializeToJson
from plone.restapi.services import Service
from Products.CMFDynamicViewFTI.interfaces import ISelectableBrowserDefault
from zope.component import queryMultiAdapter


class ContentGet(Service):
"""Returns a serialized content object."""

def reply(self):
serializer = queryMultiAdapter((self.context, self.request), ISerializeToJson)

serializer = None
if ISelectableBrowserDefault.providedBy(self.context):
if not self.context.getDefaultPage():
layout = self.context.getLayout()
serializer = queryMultiAdapter(
(self.context, self.request), ISerializeToJson,
name=layout)

if serializer is None:
serializer = queryMultiAdapter(
(self.context, self.request), ISerializeToJson)

if serializer is None:
self.request.response.setStatus(501)
Expand Down
15 changes: 10 additions & 5 deletions src/plone/restapi/tests/test_services.py
Expand Up @@ -39,7 +39,8 @@ def tearDown(self):
def test_get_document(self):
self.portal.invokeFactory("Document", id="doc1", title="My Document")
self.portal.doc1.description = u"This is a document"
self.portal.doc1.text = RichTextValue(u"Lorem ipsum", "text/plain", "text/html")
self.portal.doc1.text = RichTextValue(
u"Lorem ipsum", "text/plain", "text/html")
transaction.commit()

response = self.api_session.get(self.portal.doc1.absolute_url())
Expand Down Expand Up @@ -67,7 +68,8 @@ def test_get_document(self):
),
)
self.assertEqual("My Document", response.json().get("title"))
self.assertEqual("This is a document", response.json().get("description"))
self.assertEqual("This is a document",
response.json().get("description"))
self.assertEqual(
{
u"data": u"<p>Lorem ipsum</p>",
Expand Down Expand Up @@ -137,7 +139,8 @@ def test_get_folder(self):
response.json().get("@type")
),
)
self.assertEqual(self.portal.folder1.absolute_url(), response.json().get("@id"))
self.assertEqual(self.portal.folder1.absolute_url(),
response.json().get("@id"))
self.assertEqual("My Folder", response.json().get("title"))

def test_get_site_root(self):
Expand Down Expand Up @@ -193,7 +196,8 @@ def test_get_file(self): # pragma: no cover
"When sending a GET request with Content-Type: application/json "
+ "the server should respond with sending back application/json.",
)
self.assertEqual(response.json()["@id"], self.portal.file1.absolute_url())
self.assertEqual(response.json()["@id"],
self.portal.file1.absolute_url())

@unittest.skip("Not implemented yet.")
def test_get_image(self): # pragma: no cover
Expand All @@ -216,4 +220,5 @@ def test_get_image(self): # pragma: no cover
"When sending a GET request with Content-Type: application/json "
+ "the server should respond with sending back application/json.",
)
self.assertEqual(response.json()["@id"], self.portal.img1.absolute_url())
self.assertEqual(response.json()["@id"],
self.portal.img1.absolute_url())

0 comments on commit 8588bc8

Please sign in to comment.