Check the review_state to decide if moderation is enabled. If the current comment workflow implements a 'pending' state, moderation is enabled. Refs #11184.

svn path=/plone.app.discussion/trunk/; revision=40569
This commit is contained in:
Timo Stollenwerk 2010-10-08 10:22:40 +00:00
parent 2790e6d4eb
commit 6e9bb4a9cd
3 changed files with 19 additions and 6 deletions

View File

@ -4,6 +4,10 @@ Changelog
1.0b10 (unreleased)
-------------------
- Check the review_state to decide if moderation is enabled. If the current
comment workflow implements a 'pending' state, moderation is enabled.
[timo]
- Check the review_state instead of the workflow after a comment has been
posted to decide if a message is shown to the user. This allows integrators
to use custom review workflows.

View File

@ -61,13 +61,15 @@ class View(BrowserView):
return text
def moderation_enabled(self):
"""Returns true if comment moderation workflow is
enabled on 'Discussion Item' content type.
"""Returns true if a 'review workflow' is enabled on 'Discussion Item'
content type. A 'review workflow' is characterized by implementing
a 'pending' workflow state.
"""
context = aq_inner(self.context)
wf_tool = getToolByName(context, 'portal_workflow')
if wf_tool.getChainForPortalType('Discussion Item') \
== ('comment_review_workflow',):
comment_workflow = wf_tool.getChainForPortalType('Discussion Item')[0]
comment_workflow = wf_tool[comment_workflow]
if 'pending' in comment_workflow.states:
return True
else:
return False

View File

@ -66,10 +66,17 @@ class ModerationViewTest(PloneTestCase):
'++conversation++default/%s' % new_id_3)
def test_moderation_enabled(self):
self.assertEquals(self.view.moderation_enabled(), True)
"""Make sure that moderation_enabled returns true if the comment
workflow implements a 'pending' state.
"""
# The one_state_workflow does not have a 'pending' state
self.wf_tool.setChainForPortalTypes(('Discussion Item',),
('simple_publication_workflow,'))
('one_state_workflow,'))
self.assertEquals(self.view.moderation_enabled(), False)
# The comment_review_workflow does have a 'pending' state
self.wf_tool.setChainForPortalTypes(('Discussion Item',),
('comment_review_workflow,'))
self.assertEquals(self.view.moderation_enabled(), True)
def test_old_comments_not_shown_in_moderation_view(self):
# Create an old comment and make sure it is not shown