[CMF-checkins] SVN: CMF/trunk/CMFCore/ Issue 445: Work around
possible bogus alias left by '_guessMethodAliases'.
Tres Seaver
tseaver at palladion.com
Tue Jul 18 14:48:47 EDT 2006
Log message for revision 69191:
Issue 445: Work around possible bogus alias left by '_guessMethodAliases'.
Changed:
U CMF/trunk/CMFCore/PortalContent.py
U CMF/trunk/CMFCore/tests/base/dummy.py
U CMF/trunk/CMFCore/tests/test_PortalContent.py
-=-
Modified: CMF/trunk/CMFCore/PortalContent.py
===================================================================
--- CMF/trunk/CMFCore/PortalContent.py 2006-07-18 18:48:40 UTC (rev 69190)
+++ CMF/trunk/CMFCore/PortalContent.py 2006-07-18 18:48:46 UTC (rev 69191)
@@ -95,7 +95,7 @@
"""
ti = self.getTypeInfo()
method_id = ti and ti.queryMethodID('(Default)', context=self)
- if method_id:
+ if method_id and method_id!='(Default)':
method = getattr(self, method_id)
if getattr(aq_base(method), 'isDocTemp', 0):
return method(self, self.REQUEST, self.REQUEST['RESPONSE'])
Modified: CMF/trunk/CMFCore/tests/base/dummy.py
===================================================================
--- CMF/trunk/CMFCore/tests/base/dummy.py 2006-07-18 18:48:40 UTC (rev 69190)
+++ CMF/trunk/CMFCore/tests/base/dummy.py 2006-07-18 18:48:46 UTC (rev 69191)
@@ -98,6 +98,31 @@
return True
+ def listActions(self, info=None, object=None):
+ rs = []
+ for k,v in self._actions.items():
+ rs.append( DummyAction( k,v ) )
+ return rs
+
+class DummyAction:
+
+ def __init__( self, id, target, permissions=() ):
+ self._id = id
+ self.target = target
+ self.permissions = permissions
+
+ def getId( self ):
+ return self._id
+
+ # can this be right? e.g. utils._getViewFor calls action
+ # attribute directly, which is not part of API but no other way
+ # to do it...
+ def action( self, context ):
+ return self.target
+
+ def getPermissions( self ):
+ return self.permissions
+
class DummyContent( PortalContent, Item ):
"""
A Dummy piece of PortalContent
Modified: CMF/trunk/CMFCore/tests/test_PortalContent.py
===================================================================
--- CMF/trunk/CMFCore/tests/test_PortalContent.py 2006-07-18 18:48:40 UTC (rev 69190)
+++ CMF/trunk/CMFCore/tests/test_PortalContent.py 2006-07-18 18:48:46 UTC (rev 69191)
@@ -20,14 +20,17 @@
from AccessControl.SecurityManagement import newSecurityManager
from Acquisition import aq_base
+from OFS.Folder import Folder
from zope.testing.cleanup import cleanUp
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyUserFolder
from Products.CMFCore.tests.base.testcase import SecurityRequestTest
from Products.CMFCore.tests.base.testcase import setUpEvents
+from Products.CMFCore.tests.base.dummy import DummyTool
+from Products.CMFCore.tests.base.dummy import DummyContent
+from Products.CMFCore.tests.base.dummy import DummyObject
-
class PortalContentTests(unittest.TestCase):
def test_z2interfaces(self):
@@ -50,7 +53,43 @@
verifyClass(IContentish, PortalContent)
verifyClass(IDynamicType, PortalContent)
+ def _setupCallTests(self, aliases):
+ # root
+ root = Folder( 'root' )
+ # set up dummy type info with problematic double-default alias
+ root._setObject( 'portal_types', DummyTool() )
+ root.portal_types.view_actions = aliases
+
+ # dummy content and skin
+ root._setObject( 'dummycontent', DummyContent() )
+ root._setObject( 'dummy_view', DummyObject() )
+ return root.dummycontent
+
+ def test_DoubleDefaultAlias(self):
+ test_aliases = ( ('(Default)', '(Default)'),
+ ('view', 'dummy_view'),
+ )
+ ob = self._setupCallTests(test_aliases)
+ # in unfixed version fail here with AttributeError
+ # can end up with this arrangement using _getAliases though
+ # in fixed version, falls through to _getViewFor, which is BBB
+ self.assertEqual( ob(), 'dummy' )
+
+ def test_BlankDefaultAlias(self):
+ test_aliases = ( ('(Default)', ''),
+ ('view', 'dummy_view'),
+ )
+ ob = self._setupCallTests(test_aliases)
+ # blank default is BBB
+ self.assertEqual( ob(), 'dummy' )
+
+ def test_SpecificAlias(self):
+ test_aliases = ( ('(Default)', 'dummy_view'),
+ )
+ ob = self._setupCallTests(test_aliases)
+ self.assertEqual( ob(), 'dummy' )
+
class TestContentCopyPaste(SecurityRequestTest):
# Tests related to http://www.zope.org/Collectors/CMF/205
More information about the CMF-checkins
mailing list