is_discussion_allowed method from the comments viewlet now uses Conversation.enabled.
svn path=/plone.app.discussion/trunk/; revision=27381
This commit is contained in:
parent
e465d73c95
commit
473699dea0
@ -54,10 +54,8 @@ class CommentsViewlet(ViewletBase):
|
|||||||
return getSecurityManager().checkPermission('Reply to item', aq_inner(self.context))
|
return getSecurityManager().checkPermission('Reply to item', aq_inner(self.context))
|
||||||
|
|
||||||
def is_discussion_allowed(self):
|
def is_discussion_allowed(self):
|
||||||
if self.portal_discussion is None:
|
conversation = conversationAdapterFactory(self.context)
|
||||||
return False
|
return conversation.enabled
|
||||||
else:
|
|
||||||
return self.portal_discussion.isDiscussionAllowedFor(aq_inner(self.context))
|
|
||||||
|
|
||||||
def get_replies(self):
|
def get_replies(self):
|
||||||
# Return all direct replies
|
# Return all direct replies
|
||||||
@ -177,3 +175,37 @@ class ReplyToComment(BrowserView):
|
|||||||
|
|
||||||
# Redirect to comment (inside a content object page)
|
# Redirect to comment (inside a content object page)
|
||||||
self.request.response.redirect(aq_parent(aq_inner(self.context)).absolute_url() + '#comment-' + str(reply_to_comment_id))
|
self.request.response.redirect(aq_parent(aq_inner(self.context)).absolute_url() + '#comment-' + str(reply_to_comment_id))
|
||||||
|
|
||||||
|
class DeleteComment(BrowserView):
|
||||||
|
"""Delete a comment from a conversation
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __call__(self):
|
||||||
|
|
||||||
|
comment = aq_inner(self.context)
|
||||||
|
|
||||||
|
# Sanity check
|
||||||
|
comment_id = self.request.form['comment_id']
|
||||||
|
if comment_id != comment.getId():
|
||||||
|
raise ValueError
|
||||||
|
|
||||||
|
conversation = self.context.__parent__
|
||||||
|
|
||||||
|
del conversation[comment_id]
|
||||||
|
|
||||||
|
class PublishComment(BrowserView):
|
||||||
|
"""Publish a comment
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __call__(self):
|
||||||
|
|
||||||
|
comment = aq_inner(self.context)
|
||||||
|
|
||||||
|
# Sanity check
|
||||||
|
comment_id = self.request.form['comment_id']
|
||||||
|
if comment_id != comment.getId():
|
||||||
|
raise ValueError
|
||||||
|
|
||||||
|
action = self.request.form['action']
|
||||||
|
portal_workflow = getToolByName(comment, 'portal_workflow')
|
||||||
|
portal_workflow.doActionFor(comment, action)
|
@ -95,57 +95,5 @@ class CommentsViewletTest(PloneTestCase):
|
|||||||
# Create a user without setting a username
|
# Create a user without setting a username
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def test_is_discussion_allowed(self):
|
|
||||||
# We currently have four layers of testing if discussion is allowed
|
|
||||||
# on a particular content object:
|
|
||||||
#
|
|
||||||
# 1) Check if discussion is allowed globally
|
|
||||||
# 2) Check if discussion is allowed on a particular content type
|
|
||||||
# 3) If the content object is located in a folder, check if the folder
|
|
||||||
# has discussion allowed
|
|
||||||
# 4) Check if discussion is allowed on this particular content object
|
|
||||||
#
|
|
||||||
self.viewlet.update()
|
|
||||||
self.viewlet.is_discussion_allowed()
|
|
||||||
|
|
||||||
def test_is_discussion_allowed_globally(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_is_discussion_allowed_for_content_type(self):
|
|
||||||
# Check discussion allowed for content types
|
|
||||||
portal_types = getToolByName(self.portal, 'portal_types')
|
|
||||||
|
|
||||||
# Get the FTI for some content types
|
|
||||||
document_fti = getattr(portal_types, 'Document')
|
|
||||||
news_item_fti = getattr(portal_types, 'News Item')
|
|
||||||
folder_fti = getattr(portal_types, 'Folder')
|
|
||||||
|
|
||||||
# By default, discussion is only allowed for Document and News Item
|
|
||||||
# XXX: allow_discussion always returns False !!!
|
|
||||||
#self.assertEquals(document_fti.getProperty('allow_discussion'), True)
|
|
||||||
#self.assertEquals(news_item_fti.getProperty('allow_discussion'), True)
|
|
||||||
|
|
||||||
self.assertEquals(folder_fti.getProperty('allow_discussion'), False)
|
|
||||||
|
|
||||||
# Disallow discussion for the News Item content types
|
|
||||||
news_item_fti.manage_changeProperties(allow_discussion = False)
|
|
||||||
|
|
||||||
# Allow discussion for the Folder content types
|
|
||||||
folder_fti.manage_changeProperties(allow_discussion = True)
|
|
||||||
|
|
||||||
# Check if discussion for News Item content types is disallowed
|
|
||||||
self.assertEquals(news_item_fti.getProperty('allow_discussion'), False)
|
|
||||||
|
|
||||||
# Check if discussion for Folder content types is allowed
|
|
||||||
self.assertEquals(folder_fti.getProperty('allow_discussion'), True)
|
|
||||||
|
|
||||||
def test_is_discussion_allowed_for_folder(self):
|
|
||||||
# Create a folder with two content objects. Change allow_discussion
|
|
||||||
# and check if the content objects inside the folder are commentable.
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_is_discussion_allowed_on_content_object(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
return unittest.defaultTestLoader.loadTestsFromName(__name__)
|
return unittest.defaultTestLoader.loadTestsFromName(__name__)
|
Loading…
Reference in New Issue
Block a user