diff --git a/plone/app/discussion/browser/moderation.py b/plone/app/discussion/browser/moderation.py index 285f293..4dba5f4 100644 --- a/plone/app/discussion/browser/moderation.py +++ b/plone/app/discussion/browser/moderation.py @@ -2,6 +2,7 @@ from Acquisition import aq_inner, aq_parent from Products.Five.browser import BrowserView from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile +from Products.Five.browser.pagetemplatefile import ZopeTwoPageTemplateFile from Products.CMFCore.utils import getToolByName @@ -11,6 +12,23 @@ from Products.statusmessages.interfaces import IStatusMessage from plone.app.discussion.interfaces import IComment +# Begin ugly hack. It works around a ContentProviderLookupError: plone.htmlhead error caused by Zope 2 permissions. +# This error occured on Plone 3.3.x only! +# +# Source: http://athenageek.wordpress.com/2008/01/08/contentproviderlookuperror-plonehtmlhead/ +# Bug report: https://bugs.launchpad.net/zope2/+bug/176566 +# + +def _getContext(self): + self = self.aq_parent + while getattr(self, '_is_wrapperish', None): + self = self.aq_parent + return self + +ZopeTwoPageTemplateFile._getContext = _getContext +# End ugly hack. + + class View(BrowserView): """Moderation View """ diff --git a/plone/app/discussion/tests/test_moderation_view.py b/plone/app/discussion/tests/test_moderation_view.py index b642f2e..398e7c9 100644 --- a/plone/app/discussion/tests/test_moderation_view.py +++ b/plone/app/discussion/tests/test_moderation_view.py @@ -42,6 +42,7 @@ class ModerationViewTest(PloneTestCase): request = self.app.REQUEST context = getattr(self.portal, 'doc1') self.view = View(context, request) + self.view.__of__(context) self.portal.portal_workflow.setChainForPortalTypes( ('Discussion Item',), 'comment_review_workflow') self.wf_tool = self.portal.portal_workflow