[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - DiscussionTool: Make sure to only ask "real" content for their type
Jens Vagelpohl
jens at dataflake.org
Wed Sep 24 09:02:15 EDT 2008
Log message for revision 91426:
- DiscussionTool: Make sure to only ask "real" content for their type
information when checking whether discussions are allowed or not.
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
U Products.CMFDefault/trunk/Products/CMFDefault/DiscussionTool.py
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DiscussionTool.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2008-09-24 13:02:03 UTC (rev 91425)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2008-09-24 13:02:14 UTC (rev 91426)
@@ -4,6 +4,9 @@
2.2.0 (unreleased)
------------------
+- DiscussionTool: Make sure to only ask "real" content for their type
+ information when checking whether discussions are allowed or not.
+
- skins: Display add actions in the main_template.
Using folder_factories is now deprecated.
Modified: Products.CMFDefault/trunk/Products/CMFDefault/DiscussionTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/DiscussionTool.py 2008-09-24 13:02:03 UTC (rev 91425)
+++ Products.CMFDefault/trunk/Products/CMFDefault/DiscussionTool.py 2008-09-24 13:02:14 UTC (rev 91426)
@@ -24,6 +24,7 @@
from Products.CMFCore.interfaces import IDiscussionResponse
from Products.CMFCore.interfaces import IDiscussionTool
+from Products.CMFCore.interfaces import IDynamicType
from Products.CMFCore.utils import _checkPermission
from Products.CMFCore.utils import registerToolInterface
from Products.CMFCore.utils import UniqueObject
@@ -104,9 +105,13 @@
"""
if hasattr( aq_base(content), 'allow_discussion' ):
return bool(content.allow_discussion)
- typeInfo = content.getTypeInfo()
- if typeInfo:
- return bool( typeInfo.allowDiscussion() )
+
+ if IDynamicType.providedBy(content):
+ # Grabbing type information objects only works for dynamic types
+ typeInfo = content.getTypeInfo()
+ if typeInfo:
+ return bool( typeInfo.allowDiscussion() )
+
return False
#
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DiscussionTool.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DiscussionTool.py 2008-09-24 13:02:03 UTC (rev 91425)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DiscussionTool.py 2008-09-24 13:02:14 UTC (rev 91426)
@@ -91,6 +91,10 @@
self.failIf(dtool.isDiscussionAllowedFor(baz))
+ # Make sure isDiscussionAllowedFor does not blow up on items
+ # that aren't content and/or discussable at all.
+ self.failIf(dtool.isDiscussionAllowedFor(self.site.portal_types))
+
def test_getDiscussionFor(self):
dtool = self.site.portal_discussion
foo = self.site._setObject( 'foo', DummyFolder() )
More information about the Checkins
mailing list