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:
Timo Stollenwerk 2009-06-11 10:20:44 +00:00
parent e465d73c95
commit 473699dea0
2 changed files with 36 additions and 56 deletions

View File

@ -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)

View File

@ -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__)