[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - Discussions: Replaced the old (and no longer working) way to force
Jens Vagelpohl
jens at dataflake.org
Sun Sep 14 05:35:55 EDT 2008
Log message for revision 91135:
- Discussions: Replaced the old (and no longer working) way to force
Discussion Items into published state by default with a real
single-state workflow so they are put into published state correctly.
(https://bugs.launchpad.net/zope-cmf/+bug/161720)
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
U Products.CMFDefault/trunk/Products/CMFDefault/DiscussionItem.py
A Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/workflows/singlestate_workflow/
A Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/workflows/singlestate_workflow/definition.xml
U Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/workflows.xml
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DiscussionReply.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2008-09-13 23:23:33 UTC (rev 91134)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2008-09-14 09:35:53 UTC (rev 91135)
@@ -4,6 +4,11 @@
2.2.0 (unreleased)
------------------
+- Discussions: Replaced the old (and no longer working) way to force
+ Discussion Items into published state by default with a real
+ single-state workflow so they are put into published state correctly.
+ (https://bugs.launchpad.net/zope-cmf/+bug/161720)
+
- ZMI: Prevent users from creating content through the ZMI by hiding the
entry for "CMFDefault Content".
Modified: Products.CMFDefault/trunk/Products/CMFDefault/DiscussionItem.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/DiscussionItem.py 2008-09-13 23:23:33 UTC (rev 91134)
+++ Products.CMFDefault/trunk/Products/CMFDefault/DiscussionItem.py 2008-09-14 09:35:53 UTC (rev 91135)
@@ -48,8 +48,6 @@
portal_type = 'Discussion Item'
allow_discussion = 1
in_reply_to = None
- # XXX this is wrong, it precludes the use of a normal workflow.
- review_state ='published'
security = ClassSecurityInfo()
Added: Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/workflows/singlestate_workflow/definition.xml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/workflows/singlestate_workflow/definition.xml (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/workflows/singlestate_workflow/definition.xml 2008-09-14 09:35:53 UTC (rev 91135)
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<dc-workflow workflow_id="singlestate_workflow"
+ title="Single-state workflow"
+ description="" state_variable="review_state"
+ initial_state="published">
+
+ <permission>Access contents information</permission>
+ <permission>Modify portal content</permission>
+ <permission>View</permission>
+
+ <state state_id="published" title="Public">
+ <permission-map name="Access contents information"
+ acquired="True">
+ <permission-role>Anonymous</permission-role>
+ <permission-role>Manager</permission-role>
+ </permission-map>
+ <permission-map name="Modify portal content"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ <permission-role>Owner</permission-role>
+ </permission-map>
+ <permission-map name="View" acquired="True">
+ <permission-role>Anonymous</permission-role>
+ <permission-role>Manager</permission-role>
+ </permission-map>
+ </state>
+
+</dc-workflow>
Modified: Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/workflows.xml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/workflows.xml 2008-09-13 23:23:33 UTC (rev 91134)
+++ Products.CMFDefault/trunk/Products/CMFDefault/profiles/default/workflows.xml 2008-09-14 09:35:53 UTC (rev 91135)
@@ -2,10 +2,14 @@
<object name="portal_workflow" meta_type="CMF Workflow Tool">
<property name="title"></property>
<object name="default_workflow" meta_type="Workflow"/>
+ <object name="singlestate_workflow" meta_type="Workflow"/>
<bindings>
<default>
<bound-workflow workflow_id="default_workflow"/>
</default>
+ <type type_id="Discussion Item">
+ <bound-workflow workflow_id="singlestate_workflow"/>
+ </type>
<type type_id="CMF BTree Folder"/>
<type type_id="Folder"/>
</bindings>
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DiscussionReply.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DiscussionReply.py 2008-09-13 23:23:33 UTC (rev 91134)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_DiscussionReply.py 2008-09-14 09:35:53 UTC (rev 91135)
@@ -19,6 +19,7 @@
from Testing import ZopeTestCase
from AccessControl.SecurityManagement import newSecurityManager
+from AccessControl.SecurityManagement import getSecurityManager
from zope.app.component.hooks import setSite
from Products.CMFDefault.testing import FunctionalLayer
@@ -50,12 +51,22 @@
def testDiscussionReply(self):
self.discussion.getDiscussionFor(self.portal.doc)
- self.portal.doc.talkback.createReply('Title', 'Text')
- reply = self.portal.doc.talkback.objectValues()[0]
+ reply_id = self.portal.doc.talkback.createReply('Title', 'Text')
+ talkback = self.discussion.getDiscussionFor(self.portal.doc)
+ reply = talkback.getReply(reply_id)
self.assertEqual(reply.Title(), 'Title')
self.assertEqual(reply.EditableBody(), 'Text')
+ # Make sure the user who created the reply can actually see it
+ # https://bugs.launchpad.net/zope-cmf/+bug/161720
+ state = self.portal.portal_workflow.getInfoFor(reply, 'review_state')
+ self.assertEqual(state, 'published')
+ member = self.portal.portal_membership.getAuthenticatedMember()
+ self.failUnless(member.has_permission('View', reply))
+ self.failUnless(member.has_permission('Access contents information',
+ reply))
+
class DiscussionReplyTestMember(DiscussionReplyTest):
# Run the test again as another Member, i.e. reply to someone
More information about the Checkins
mailing list