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:
parent
2790e6d4eb
commit
6e9bb4a9cd
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user