diff --git a/CHANGES.rst b/CHANGES.rst index 4e6fad4..b71c625 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,7 +4,8 @@ Changelog 1.0b2 (unreleased) ------------------ -- Nothing changed yet. +Bugfixes: +- Fix error with uploading file to theme editor. plone.rest no longer works in portal_resources. [displacedaussie] 1.0b1 (2017-05-14) diff --git a/src/plone/rest/testing.py b/src/plone/rest/testing.py index 63b3114..4297636 100644 --- a/src/plone/rest/testing.py +++ b/src/plone/rest/testing.py @@ -5,7 +5,6 @@ from plone.app.testing import PloneSandboxLayer from plone.rest.service import Service from plone.testing import z2 - from zope.configuration import xmlconfig @@ -14,6 +13,7 @@ class PloneRestLayer(PloneSandboxLayer): defaultBases = (PLONE_APP_CONTENTTYPES_FIXTURE,) def setUpZope(self, app, configurationContext): + z2.installProduct(app, 'plone.app.theming') import plone.rest xmlconfig.file( 'configure.zcml', @@ -26,6 +26,10 @@ def setUpZope(self, app, configurationContext): context=configurationContext ) + def setUpPloneSite(self, portal): + # Install into Plone site using portal_setup + self.applyProfile(portal, 'plone.app.theming:default') + PLONE_REST_FIXTURE = PloneRestLayer() PLONE_REST_INTEGRATION_TESTING = IntegrationTesting( diff --git a/src/plone/rest/tests/test_traversal.py b/src/plone/rest/tests/test_traversal.py index 8c0f6ba..ac31c8f 100644 --- a/src/plone/rest/tests/test_traversal.py +++ b/src/plone/rest/tests/test_traversal.py @@ -126,3 +126,7 @@ def test_json_request_to_view_namespace_returns_view(self): self.portal[self.portal.invokeFactory('Folder', id='folder1')] obj = self.traverse('/plone/folder1/@@folder_contents') self.assertTrue(IBrowserView.providedBy(obj), 'IBrowserView expected') + + def test_json_request_to_portal_resource_returns_page_template(self): + obj = self.traverse('/plone/portal_resources') + self.assertIsNotNone(obj, 'Object expected') diff --git a/src/plone/rest/traverse.py b/src/plone/rest/traverse.py index 6f88546..95e0218 100644 --- a/src/plone/rest/traverse.py +++ b/src/plone/rest/traverse.py @@ -9,6 +9,7 @@ from zope.interface import implements from zope.publisher.interfaces.browser import IBrowserPublisher from Products.CMFCore.interfaces import IContentish +from Products.BTreeFolder2.BTreeFolder2 import BTreeFolder2 class RESTTraverse(DefaultPublishTraverse): @@ -21,6 +22,9 @@ def publishTraverse(self, request, name): and not IService.providedBy(obj)): if isinstance(obj, VirtualHostMonster): return obj + elif (isinstance(obj, BTreeFolder2) + and obj.id == 'portal_resources'): + return obj else: raise KeyError except KeyError: