[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - made sure getMembersFolder works if tool is used as local utility
Yvo Schubbe
y.2011 at wcm-solutions.de
Mon Feb 13 09:15:54 UTC 2012
Log message for revision 124384:
- made sure getMembersFolder works if tool is used as local utility
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/MembershipTool.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_MembershipTool.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/MembershipTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/MembershipTool.py 2012-02-13 09:12:58 UTC (rev 124383)
+++ Products.CMFDefault/trunk/Products/CMFDefault/MembershipTool.py 2012-02-13 09:15:54 UTC (rev 124384)
@@ -14,13 +14,14 @@
"""
from AccessControl.SecurityInfo import ClassSecurityInfo
-from AccessControl.SecurityManagement import getSecurityManager
from Acquisition import aq_base
from Acquisition import aq_inner
from Acquisition import aq_parent
from App.class_init import InitializeClass
from App.special_dtml import DTMLFile
+from zope.globalrequest import getRequest
from zope.interface import implements
+from ZPublisher.BaseRequest import RequestContainer
from Products.CMFCore.MembershipTool import MembershipTool as BaseTool
from Products.CMFCore.utils import _checkPermission
@@ -104,12 +105,13 @@
def getMembersFolder(self):
""" Get the members folder object.
"""
- parent = aq_parent( aq_inner(self) )
+ parent = aq_parent(aq_inner(self))
try:
members_folder = parent.restrictedTraverse(self.membersfolder_id)
except (AttributeError, KeyError):
- members_folder = None
- return members_folder
+ return None
+ request_container = RequestContainer(REQUEST=getRequest())
+ return members_folder.__of__(request_container)
security.declarePublic('createMemberArea')
def createMemberArea(self, member_id=''):
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_MembershipTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_MembershipTool.py 2012-02-13 09:12:58 UTC (rev 124383)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_MembershipTool.py 2012-02-13 09:15:54 UTC (rev 124384)
@@ -17,7 +17,11 @@
import Testing
from AccessControl.SecurityManagement import newSecurityManager
+from five.localsitemanager import make_objectmanager_site
from zope.component import getSiteManager
+from zope.component.hooks import setSite
+from zope.globalrequest import clearRequest
+from zope.globalrequest import setRequest
from zope.interface.verify import verifyClass
from zope.testing.cleanup import cleanUp
@@ -28,9 +32,10 @@
from Products.CMFCore.tests.base.dummy import DummyTool
from Products.CMFCore.tests.base.dummy import DummyUserFolder
from Products.CMFCore.tests.base.testcase import SecurityTest
+from Products.CMFCore.tests.base.testcase import TransactionalTest
-class MembershipToolTests(unittest.TestCase):
+class MembershipToolTests(TransactionalTest):
def _makeOne(self, *args, **kw):
from Products.CMFDefault.MembershipTool import MembershipTool
@@ -38,9 +43,20 @@
return MembershipTool(*args, **kw)
def setUp(self):
- self.site = DummySite('site')
- self.site._setObject( 'portal_membership', self._makeOne() )
+ from Products.CMFCore.interfaces import IMembershipTool
+ TransactionalTest.setUp(self)
+ self.site = DummySite('site').__of__(self.app)
+ make_objectmanager_site(self.site)
+ setSite(self.site)
+ self.site._setObject('portal_membership', self._makeOne())
+ sm = getSiteManager()
+ sm.registerUtility(self.site.portal_membership, IMembershipTool)
+
+ def tearDown(self):
+ cleanUp()
+ TransactionalTest.tearDown(self)
+
def test_interfaces(self):
from Products.CMFDefault.interfaces import IMembershipTool
from Products.CMFDefault.MembershipTool import MembershipTool
@@ -48,23 +64,42 @@
verifyClass(IMembershipTool, MembershipTool)
def test_MembersFolder_methods(self):
- mtool = self.site.portal_membership
- self.assertEqual( mtool.getMembersFolder(), None )
- self.site._setObject( 'Members', DummyFolder() )
- self.assertEqual( mtool.getMembersFolder(), self.site.Members )
+ from Products.CMFCore.interfaces import IMembershipTool
+
+ mtool = getSiteManager().getUtility(IMembershipTool)
+ self.assertEqual(mtool.getMembersFolder(), None)
+ self.site._setObject('Members', DummyFolder())
+ self.assertEqual(mtool.getMembersFolder(), self.site.Members)
mtool.setMembersFolderById(id='foo')
- self.assertEqual( mtool.getMembersFolder(), None )
- self.site._setObject( 'foo', DummyFolder() )
- self.assertEqual( mtool.getMembersFolder(), self.site.foo )
- mtool.setMembersFolderById( id='foo/members' )
- self.assertEqual( mtool.getMembersFolder(), None )
- self.site.foo._setObject( 'members', DummyFolder() )
- self.assertEqual( mtool.getMembersFolder(), self.site.foo.members )
+ self.assertEqual(mtool.getMembersFolder(), None)
+ self.site._setObject('foo', DummyFolder())
+ self.assertEqual(mtool.getMembersFolder(), self.site.foo)
+ mtool.setMembersFolderById(id='foo/members')
+ self.assertEqual(mtool.getMembersFolder(), None)
+ self.site.foo._setObject('members', DummyFolder())
+ self.assertEqual(mtool.getMembersFolder(), self.site.foo.members)
mtool.setMembersFolderById()
# Note: self.site is returned due to DummyObject.restrictedTraverse
- self.assertEqual( mtool.getMembersFolder(), self.site )
+ self.assertEqual(mtool.getMembersFolder(), self.site)
+ def test_HomeFolder_methods(self):
+ from Products.CMFCore.interfaces import IMembershipTool
+ mtool = getSiteManager().getUtility(IMembershipTool)
+ setRequest(self.REQUEST)
+ self.assertEqual(mtool.getHomeFolder(id='member_foo'), None)
+ self.assertEqual(mtool.getHomeUrl(id='member_foo'), None)
+ self.site._setObject('Members', PortalFolder('Members'))
+ self.assertEqual(mtool.getHomeFolder(id='member_foo'), None)
+ self.assertEqual(mtool.getHomeUrl(id='member_foo'), None)
+ self.site.Members._setObject('member_foo', PortalFolder('member_foo'))
+ self.assertEqual(mtool.getHomeFolder(id='member_foo'),
+ self.site.Members.member_foo)
+ self.assertEqual(mtool.getHomeUrl(id='member_foo'),
+ 'http://nohost/bar/site/Members/member_foo')
+ clearRequest()
+
+
class MembershipToolSecurityTests(SecurityTest):
def _makeOne(self, *args, **kw):
@@ -74,7 +109,7 @@
def setUp(self):
SecurityTest.setUp(self)
- self.site = DummySite('site').__of__(self.root)
+ self.site = DummySite('site').__of__(self.app)
self.site._setObject( 'portal_membership', self._makeOne() )
def tearDown(self):
More information about the checkins
mailing list