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)
|
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
|
- 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
|
posted to decide if a message is shown to the user. This allows integrators
|
||||||
to use custom review workflows.
|
to use custom review workflows.
|
||||||
|
@ -61,13 +61,15 @@ class View(BrowserView):
|
|||||||
return text
|
return text
|
||||||
|
|
||||||
def moderation_enabled(self):
|
def moderation_enabled(self):
|
||||||
"""Returns true if comment moderation workflow is
|
"""Returns true if a 'review workflow' is enabled on 'Discussion Item'
|
||||||
enabled on 'Discussion Item' content type.
|
content type. A 'review workflow' is characterized by implementing
|
||||||
|
a 'pending' workflow state.
|
||||||
"""
|
"""
|
||||||
context = aq_inner(self.context)
|
context = aq_inner(self.context)
|
||||||
wf_tool = getToolByName(context, 'portal_workflow')
|
wf_tool = getToolByName(context, 'portal_workflow')
|
||||||
if wf_tool.getChainForPortalType('Discussion Item') \
|
comment_workflow = wf_tool.getChainForPortalType('Discussion Item')[0]
|
||||||
== ('comment_review_workflow',):
|
comment_workflow = wf_tool[comment_workflow]
|
||||||
|
if 'pending' in comment_workflow.states:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
@ -66,10 +66,17 @@ class ModerationViewTest(PloneTestCase):
|
|||||||
'++conversation++default/%s' % new_id_3)
|
'++conversation++default/%s' % new_id_3)
|
||||||
|
|
||||||
def test_moderation_enabled(self):
|
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',),
|
self.wf_tool.setChainForPortalTypes(('Discussion Item',),
|
||||||
('simple_publication_workflow,'))
|
('one_state_workflow,'))
|
||||||
self.assertEquals(self.view.moderation_enabled(), False)
|
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):
|
def test_old_comments_not_shown_in_moderation_view(self):
|
||||||
# Create an old comment and make sure it is not shown
|
# Create an old comment and make sure it is not shown
|
||||||
|
Loading…
Reference in New Issue
Block a user