Pep8
This commit is contained in:
		
							parent
							
								
									a3883d7e7b
								
							
						
					
					
						commit
						0558a9b739
					
				@ -58,8 +58,8 @@ COMMENT_DESCRIPTION_MARKDOWN = _(
 | 
			
		||||
COMMENT_DESCRIPTION_INTELLIGENT_TEXT = _(
 | 
			
		||||
    u"comment_description_intelligent_text",
 | 
			
		||||
    default=u"You can add a comment by filling out the form below. " +
 | 
			
		||||
             "Plain text formatting. Web and email addresses are transformed " +
 | 
			
		||||
             "into clickable links.")
 | 
			
		||||
             "Plain text formatting. Web and email addresses are " +
 | 
			
		||||
             "transformed into clickable links.")
 | 
			
		||||
 | 
			
		||||
COMMENT_DESCRIPTION_MODERATION_ENABLED = _(
 | 
			
		||||
    u"comment_description_moderation_enabled",
 | 
			
		||||
@ -68,7 +68,7 @@ COMMENT_DESCRIPTION_MODERATION_ENABLED = _(
 | 
			
		||||
 | 
			
		||||
class CommentForm(extensible.ExtensibleForm, form.Form):
 | 
			
		||||
 | 
			
		||||
    ignoreContext = True # don't use context to get widget data
 | 
			
		||||
    ignoreContext = True  # don't use context to get widget data
 | 
			
		||||
    id = None
 | 
			
		||||
    label = _(u"Add a comment")
 | 
			
		||||
    fields = field.Fields(IComment).omit('portal_type',
 | 
			
		||||
@ -113,8 +113,8 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
 | 
			
		||||
        member_email = member.getProperty('email')
 | 
			
		||||
 | 
			
		||||
        # Hide the user_notification checkbox if user notification is disabled
 | 
			
		||||
        # or the user is not logged in. Also check if the user has a valid email
 | 
			
		||||
        # address
 | 
			
		||||
        # or the user is not logged in. Also check if the user has a valid
 | 
			
		||||
        # email address
 | 
			
		||||
        if member_email == '' or \
 | 
			
		||||
           not settings.user_notification_enabled or \
 | 
			
		||||
           mtool.isAnonymousUser():
 | 
			
		||||
@ -130,18 +130,18 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
 | 
			
		||||
                             name='comment')
 | 
			
		||||
    def handleComment(self, action):
 | 
			
		||||
        context = aq_inner(self.context)
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        # Check if conversation is enabled on this content object
 | 
			
		||||
        if not self.__parent__.restrictedTraverse(
 | 
			
		||||
            '@@conversation_view').enabled():
 | 
			
		||||
            raise Unauthorized("Discussion is not enabled for this content "
 | 
			
		||||
                               "object.")
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        # Validation form
 | 
			
		||||
        data, errors = self.extractData()
 | 
			
		||||
        if errors:
 | 
			
		||||
            return
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        # Validate Captcha
 | 
			
		||||
        registry = queryUtility(IRegistry)
 | 
			
		||||
        settings = registry.forInterface(IDiscussionSettings, check=False)
 | 
			
		||||
@ -157,12 +157,12 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
 | 
			
		||||
                                       ICaptcha['captcha'],
 | 
			
		||||
                                       None)
 | 
			
		||||
            captcha.validate(data['captcha'])
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        # some attributes are not always set
 | 
			
		||||
        author_name = u""
 | 
			
		||||
        author_email = u""
 | 
			
		||||
        user_notification = None
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        # Create comment
 | 
			
		||||
        comment = createObject('plone.Comment')
 | 
			
		||||
        # Set comment attributes (including extended comment form attributes)
 | 
			
		||||
@ -173,7 +173,7 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
 | 
			
		||||
            author_name = data['author_name']
 | 
			
		||||
            if isinstance(author_name, str):
 | 
			
		||||
                author_name = unicode(author_name, 'utf-8')
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        # Set comment author properties for anonymous users or members
 | 
			
		||||
        can_reply = getSecurityManager().checkPermission('Reply to item',
 | 
			
		||||
                                                         context)
 | 
			
		||||
@ -185,7 +185,8 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
 | 
			
		||||
            comment.author_name = author_name
 | 
			
		||||
            comment.author_email = author_email
 | 
			
		||||
            comment.user_notification = user_notification
 | 
			
		||||
            comment.creation_date = comment.modification_date = datetime.utcnow()
 | 
			
		||||
            comment.creation_date = datetime.utcnow()
 | 
			
		||||
            comment.modification_date = datetime.utcnow()
 | 
			
		||||
        elif not portal_membership.isAnonymousUser() and can_reply:
 | 
			
		||||
            # Member
 | 
			
		||||
            member = portal_membership.getAuthenticatedMember()
 | 
			
		||||
@ -204,8 +205,9 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
 | 
			
		||||
            comment.author_name = fullname
 | 
			
		||||
            comment.author_email = email
 | 
			
		||||
            comment.user_notification = user_notification
 | 
			
		||||
            comment.creation_date = comment.modification_date = datetime.utcnow()
 | 
			
		||||
        else: # pragma: no cover
 | 
			
		||||
            comment.creation_date = datetime.utcnow()
 | 
			
		||||
            comment.modification_date = datetime.utcnow()
 | 
			
		||||
        else:  # pragma: no cover
 | 
			
		||||
            raise Unauthorized("Anonymous user tries to post a comment, but "
 | 
			
		||||
                "anonymous commenting is disabled. Or user does not have the "
 | 
			
		||||
                "'reply to item' permission.")
 | 
			
		||||
@ -244,7 +246,7 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
 | 
			
		||||
    def handleCancel(self, action):
 | 
			
		||||
        # This method should never be called, it's only there to show
 | 
			
		||||
        # a cancel button that is handled by a jQuery method.
 | 
			
		||||
        pass # pragma: no cover
 | 
			
		||||
        pass  # pragma: no cover
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CommentsViewlet(ViewletBase):
 | 
			
		||||
@ -326,7 +328,7 @@ class CommentsViewlet(ViewletBase):
 | 
			
		||||
            try:
 | 
			
		||||
                self.get_replies(workflow_actions).next()
 | 
			
		||||
                return True
 | 
			
		||||
            except StopIteration: # pragma: no cover
 | 
			
		||||
            except StopIteration:  # pragma: no cover
 | 
			
		||||
                pass
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -167,7 +167,7 @@ class ConversationCatalogTest(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
        brains = self.catalog.searchResults(dict(
 | 
			
		||||
                     path={'query':
 | 
			
		||||
                             '/'.join(self.portal.doc1.getPhysicalPath()) },
 | 
			
		||||
                           '/'.join(self.portal.doc1.getPhysicalPath())},
 | 
			
		||||
                     portal_type="Document"
 | 
			
		||||
                     ))
 | 
			
		||||
        doc1_brain = brains[0]
 | 
			
		||||
@ -178,7 +178,7 @@ class ConversationCatalogTest(unittest.TestCase):
 | 
			
		||||
        del self.conversation[new_comment2_id]
 | 
			
		||||
        brains = self.catalog.searchResults(dict(
 | 
			
		||||
                     path={'query':
 | 
			
		||||
                             '/'.join(self.portal.doc1.getPhysicalPath()) },
 | 
			
		||||
                          '/'.join(self.portal.doc1.getPhysicalPath())},
 | 
			
		||||
                     portal_type="Document"
 | 
			
		||||
                     ))
 | 
			
		||||
        doc1_brain = brains[0]
 | 
			
		||||
@ -188,7 +188,7 @@ class ConversationCatalogTest(unittest.TestCase):
 | 
			
		||||
        del self.conversation[self.new_comment1_id]
 | 
			
		||||
        brains = self.catalog.searchResults(dict(
 | 
			
		||||
                     path={'query':
 | 
			
		||||
                             '/'.join(self.portal.doc1.getPhysicalPath()) },
 | 
			
		||||
                           '/'.join(self.portal.doc1.getPhysicalPath())},
 | 
			
		||||
                     portal_type="Document"
 | 
			
		||||
                     ))
 | 
			
		||||
        doc1_brain = brains[0]
 | 
			
		||||
@ -197,7 +197,7 @@ class ConversationCatalogTest(unittest.TestCase):
 | 
			
		||||
    def test_conversation_indexes_not_in_comments(self):
 | 
			
		||||
        brains = self.catalog.searchResults(dict(
 | 
			
		||||
                     path={'query':
 | 
			
		||||
                             '/'.join(self.portal.doc1.getPhysicalPath()) },
 | 
			
		||||
                           '/'.join(self.portal.doc1.getPhysicalPath())},
 | 
			
		||||
                     portal_type="Discussion Item"
 | 
			
		||||
                     ))
 | 
			
		||||
        comment1_brain = brains[0]
 | 
			
		||||
 | 
			
		||||
@ -60,7 +60,7 @@ class TestCommentForm(unittest.TestCase):
 | 
			
		||||
                                   'portal_discussion',
 | 
			
		||||
                                    None)
 | 
			
		||||
        self.discussionTool.overrideDiscussionFor(self.portal.doc1, False)
 | 
			
		||||
        self.membershipTool = getToolByName(self.folder, 'portal_membership', None)
 | 
			
		||||
        self.membershipTool = getToolByName(self.folder, 'portal_membership')
 | 
			
		||||
        self.memberdata = self.portal.portal_memberdata
 | 
			
		||||
        self.context = getattr(self.portal, 'doc1')
 | 
			
		||||
 | 
			
		||||
@ -261,7 +261,8 @@ class TestCommentsViewlet(unittest.TestCase):
 | 
			
		||||
        # Anonymous has no 'can review' permission
 | 
			
		||||
        self.assertFalse(self.viewlet.can_review())
 | 
			
		||||
        # The reviewer role has the 'Review comments' permission
 | 
			
		||||
        self.portal.acl_users._doAddUser('reviewer', 'secret', ['Reviewer'], [])
 | 
			
		||||
        self.portal.acl_users._doAddUser(
 | 
			
		||||
            'reviewer', 'secret', ['Reviewer'], [])
 | 
			
		||||
        login(self.portal, 'reviewer')
 | 
			
		||||
        self.assertTrue(self.viewlet.can_review())
 | 
			
		||||
 | 
			
		||||
@ -276,7 +277,8 @@ class TestCommentsViewlet(unittest.TestCase):
 | 
			
		||||
        # Anonymous has no 'can review' permission
 | 
			
		||||
        self.assertFalse(self.viewlet.can_manage())
 | 
			
		||||
        # The reviewer role has the 'Review comments' permission
 | 
			
		||||
        self.portal.acl_users._doAddUser('reviewer', 'secret', ['Reviewer'], [])
 | 
			
		||||
        self.portal.acl_users._doAddUser(
 | 
			
		||||
            'reviewer', 'secret', ['Reviewer'], [])
 | 
			
		||||
        login(self.portal, 'reviewer')
 | 
			
		||||
        self.assertTrue(self.viewlet.can_manage())
 | 
			
		||||
 | 
			
		||||
@ -295,8 +297,8 @@ class TestCommentsViewlet(unittest.TestCase):
 | 
			
		||||
        self.assertTrue(self.viewlet.comment_transform_message())
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            self.viewlet.comment_transform_message(),
 | 
			
		||||
            "You can add a comment by filling out the form below. Plain text " +
 | 
			
		||||
            "formatting.")
 | 
			
		||||
            "You can add a comment by filling out the form below. Plain " +
 | 
			
		||||
            "text formatting.")
 | 
			
		||||
 | 
			
		||||
        # Set text transform to intelligent text
 | 
			
		||||
        registry = queryUtility(IRegistry)
 | 
			
		||||
@ -358,7 +360,7 @@ class TestCommentsViewlet(unittest.TestCase):
 | 
			
		||||
            ('comment_review_workflow,'))
 | 
			
		||||
        # Check if workflow actions are available
 | 
			
		||||
        reply = self.viewlet.get_replies(workflow_actions=True).next()
 | 
			
		||||
        self.assertTrue(reply.has_key('actions'))
 | 
			
		||||
        self.assertTrue('actions' in reply)
 | 
			
		||||
        self.assertEqual(reply['actions'][0]['id'],
 | 
			
		||||
                          'publish')
 | 
			
		||||
        self.assertEqual(reply['actions'][0]['url'],
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,8 @@ from Products.CMFCore.utils import getToolByName
 | 
			
		||||
from plone.app.testing import TEST_USER_ID, setRoles
 | 
			
		||||
 | 
			
		||||
from plone.app.discussion.interfaces import IDiscussionSettings
 | 
			
		||||
from plone.app.discussion.testing import PLONE_APP_DISCUSSION_INTEGRATION_TESTING
 | 
			
		||||
from plone.app.discussion.testing import \
 | 
			
		||||
    PLONE_APP_DISCUSSION_INTEGRATION_TESTING
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RegistryTest(unittest.TestCase):
 | 
			
		||||
@ -166,5 +167,6 @@ class ConfigurationChangedSubscriberTest(unittest.TestCase):
 | 
			
		||||
        # setting itself remains unchanged.
 | 
			
		||||
        self.settings.moderation_enabled = True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_suite():
 | 
			
		||||
    return unittest.defaultTestLoader.loadTestsFromName(__name__)
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,8 @@ from Products.CMFCore.utils import getToolByName
 | 
			
		||||
 | 
			
		||||
from plone.app.testing import TEST_USER_ID, setRoles
 | 
			
		||||
 | 
			
		||||
from plone.app.discussion.testing import PLONE_APP_DISCUSSION_INTEGRATION_TESTING
 | 
			
		||||
from plone.app.discussion.testing import \
 | 
			
		||||
    PLONE_APP_DISCUSSION_INTEGRATION_TESTING
 | 
			
		||||
 | 
			
		||||
from plone.app.discussion import interfaces
 | 
			
		||||
from plone.app.discussion.interfaces import IConversation
 | 
			
		||||
@ -179,7 +180,6 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        # 1) allow_discussion attribute: Every content object in Plone
 | 
			
		||||
        # has a allow_discussion attribute. By default it is set to None.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        # Create a conversation.
 | 
			
		||||
        IConversation(self.portal.doc1)
 | 
			
		||||
 | 
			
		||||
@ -206,7 +206,7 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        # the content type. So we allow discussion on the Document content
 | 
			
		||||
        # type and check if the Document object allows discussion now.
 | 
			
		||||
        document_fti = getattr(portal_types, 'Document')
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion = True)
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion=True)
 | 
			
		||||
        self.assertEqual(portal_discussion.isDiscussionAllowedFor(
 | 
			
		||||
            self.portal.doc1), True)
 | 
			
		||||
        self.assertEqual(self.portal.doc1.getTypeInfo().allowDiscussion(),
 | 
			
		||||
@ -223,7 +223,7 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
                          False)
 | 
			
		||||
 | 
			
		||||
        # Disallow discussion on the Document content type again
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion = False)
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion=False)
 | 
			
		||||
        self.assertEqual(portal_discussion.isDiscussionAllowedFor(
 | 
			
		||||
            self.portal.doc1), False)
 | 
			
		||||
        self.assertEqual(self.portal.doc1.getTypeInfo().allowDiscussion(),
 | 
			
		||||
@ -258,7 +258,7 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        # otherwise allow_discussion will always return False
 | 
			
		||||
        portal_types = getToolByName(self.portal, 'portal_types')
 | 
			
		||||
        document_fti = getattr(portal_types, 'Document')
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion = True)
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion=True)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(conversation.enabled(), True)
 | 
			
		||||
 | 
			
		||||
@ -272,7 +272,7 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        # otherwise allow_discussion will always return False
 | 
			
		||||
        portal_types = getToolByName(self.portal, 'portal_types')
 | 
			
		||||
        document_fti = getattr(portal_types, 'Document')
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion = True)
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion=True)
 | 
			
		||||
 | 
			
		||||
        # Check if conversation is enabled now
 | 
			
		||||
        self.assertEqual(conversation.enabled(), True)
 | 
			
		||||
@ -289,7 +289,6 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        settings.globally_enabled = True
 | 
			
		||||
        self.assertEqual(conversation.enabled(), True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def test_allow_discussion_for_news_items(self):
 | 
			
		||||
 | 
			
		||||
        self.typetool.constructContent('News Item', self.portal, 'newsitem')
 | 
			
		||||
@ -300,7 +299,7 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        # otherwise allow_discussion will always return False
 | 
			
		||||
        portal_types = getToolByName(self.portal, 'portal_types')
 | 
			
		||||
        document_fti = getattr(portal_types, 'News Item')
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion = True)
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion=True)
 | 
			
		||||
 | 
			
		||||
        # Check if conversation is enabled now
 | 
			
		||||
        self.assertEqual(conversation.enabled(), True)
 | 
			
		||||
@ -329,7 +328,7 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        # Allow discussion on Document content type
 | 
			
		||||
        portal_types = getToolByName(self.portal, 'portal_types')
 | 
			
		||||
        document_fti = getattr(portal_types, 'Document')
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion = True)
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion=True)
 | 
			
		||||
 | 
			
		||||
        # Check if conversation is enabled now
 | 
			
		||||
        self.assertEqual(conversation.enabled(), True)
 | 
			
		||||
@ -337,7 +336,7 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        # Disallow discussion on Document content type
 | 
			
		||||
        portal_types = getToolByName(self.portal, 'portal_types')
 | 
			
		||||
        document_fti = getattr(portal_types, 'Document')
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion = False)
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion=False)
 | 
			
		||||
 | 
			
		||||
        # Check if conversation is enabled now
 | 
			
		||||
        self.assertEqual(conversation.enabled(), False)
 | 
			
		||||
@ -358,7 +357,7 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        # Allow discussion on Folder content type
 | 
			
		||||
        portal_types = getToolByName(self.portal, 'portal_types')
 | 
			
		||||
        document_fti = getattr(portal_types, 'Folder')
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion = True)
 | 
			
		||||
        document_fti.manage_changeProperties(allow_discussion=True)
 | 
			
		||||
 | 
			
		||||
        # Always return False
 | 
			
		||||
        self.assertFalse(conversation.enabled())
 | 
			
		||||
@ -710,8 +709,7 @@ class ConversationTest(unittest.TestCase):
 | 
			
		||||
        self.assertFalse('Discussion Item' in BAD_TYPES)
 | 
			
		||||
 | 
			
		||||
    def test_no_comment(self):
 | 
			
		||||
        conversation = IConversation(self.portal.doc1)
 | 
			
		||||
 | 
			
		||||
        IConversation(self.portal.doc1)
 | 
			
		||||
        # Make sure no conversation has been created
 | 
			
		||||
        self.assertTrue('plone.app.discussion:conversation' not in
 | 
			
		||||
                     IAnnotations(self.portal.doc1))
 | 
			
		||||
@ -850,5 +848,6 @@ class RepliesTest(unittest.TestCase):
 | 
			
		||||
        self.assertEqual(len(replies_to_comment1_1), 1)
 | 
			
		||||
        self.assertEqual(len(replies_to_comment2), 1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_suite():
 | 
			
		||||
    return unittest.defaultTestLoader.loadTestsFromName(__name__)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user