diff --git a/plone/app/discussion/browser/captcha.py b/plone/app/discussion/browser/captcha.py index 4c5da26..8dd149a 100644 --- a/plone/app/discussion/browser/captcha.py +++ b/plone/app/discussion/browser/captcha.py @@ -42,7 +42,8 @@ class CaptchaExtender(extensible.FormExtender): registered when a plugin is installed that provides the "plone.app.discussion-captcha" feature. """ - adapts(Interface, IDefaultBrowserLayer, CommentForm) # context, request, form + # context, request, form + adapts(Interface, IDefaultBrowserLayer, CommentForm) fields = Fields(ICaptcha) @@ -66,10 +67,10 @@ class CaptchaExtender(extensible.FormExtender): self.form.fields['captcha'].widgetFactory = CaptchaFieldWidget elif self.captcha == 'recaptcha': from plone.formwidget.recaptcha import ReCaptchaFieldWidget - self.form.fields['captcha'].widgetFactory = ReCaptchaFieldWidget + self.form.fields['captcha'].widgetFactory = \ + ReCaptchaFieldWidget elif self.captcha == 'norobots': from collective.z3cform.norobots import NorobotsFieldWidget self.form.fields['captcha'].widgetFactory = NorobotsFieldWidget else: self.form.fields['captcha'].mode = interfaces.HIDDEN_MODE - diff --git a/plone/app/discussion/browser/controlpanel.py b/plone/app/discussion/browser/controlpanel.py index 05f05cc..93b61d9 100644 --- a/plone/app/discussion/browser/controlpanel.py +++ b/plone/app/discussion/browser/controlpanel.py @@ -66,14 +66,14 @@ class DiscussionSettingsEditForm(controlpanel.RegistryEditForm): _(u"Moderator Email Notification") self.widgets['user_notification_enabled'].label = \ _(u"User Email Notification") - + @button.buttonAndHandler(_('Save'), name=None) def handleSave(self, action): data, errors = self.extractData() if errors: self.status = self.formErrorsMessage return - changes = self.applyChanges(data) + self.applyChanges(data) IStatusMessage(self.request).addStatusMessage(_(u"Changes saved"), "info") self.context.REQUEST.RESPONSE.redirect("@@discussion-settings") diff --git a/plone/app/discussion/conversation.py b/plone/app/discussion/conversation.py index 63ebc37..e9f5a29 100644 --- a/plone/app/discussion/conversation.py +++ b/plone/app/discussion/conversation.py @@ -126,7 +126,7 @@ class Conversation(Traversable, Persistent, Explicit): children = self._children.get(comment_id, None) if children is not None: for child_id in children: - for value in recurse(child_id, d+1): + for value in recurse(child_id, d + 1): yield value # Find top level threads @@ -295,9 +295,9 @@ try: except ImportError: pass else: - @implementer(IConversation) # pragma: no cover - @adapter(IAnnotatable) # pragma: no cover - def conversationCanonicalAdapterFactory(content): # pragma: no cover + @implementer(IConversation) # pragma: no cover + @adapter(IAnnotatable) # pragma: no cover + def conversationCanonicalAdapterFactory(content): # pragma: no cover """Adapter factory to fetch the default conversation from annotations. Will create the conversation if it does not exist. @@ -318,7 +318,7 @@ class ConversationReplies(object): """ implements(IReplies) - adapts(Conversation) # relies on implementation details + adapts(Conversation) # relies on implementation details def __init__(self, context): self.conversation = context @@ -387,6 +387,7 @@ class ConversationReplies(object): # dict yet when the adapter is first created return self.conversation._children.get(self.comment_id, LLSet()) + class CommentReplies(ConversationReplies): """An IReplies adapter for comments. @@ -418,4 +419,3 @@ class CommentReplies(ConversationReplies): # Dict API is inherited, written in terms of self.conversation and # self.children - diff --git a/plone/app/discussion/tests/test_catalog.py b/plone/app/discussion/tests/test_catalog.py index d4b4513..6c6e5e0 100644 --- a/plone/app/discussion/tests/test_catalog.py +++ b/plone/app/discussion/tests/test_catalog.py @@ -71,7 +71,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" )) self.conversation = conversation @@ -95,7 +95,7 @@ class ConversationCatalogTest(unittest.TestCase): comment2.reindexObject() brains = self.catalog.searchResults(dict( path={'query': - '/'.join(self.portal.doc1.getPhysicalPath()) }, + '/'.join(self.portal.doc1.getPhysicalPath())}, portal_type="Document" )) doc1_brain = brains[0] @@ -120,7 +120,7 @@ class ConversationCatalogTest(unittest.TestCase): comment2.reindexObject() brains = self.catalog.searchResults(dict( path={'query': - '/'.join(self.portal.doc1.getPhysicalPath()) }, + '/'.join(self.portal.doc1.getPhysicalPath())}, portal_type="Document" )) doc1_brain = brains[0] @@ -132,7 +132,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] @@ -143,7 +143,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] diff --git a/plone/app/discussion/tests/test_comment.py b/plone/app/discussion/tests/test_comment.py index 47722ba..6a2b419 100644 --- a/plone/app/discussion/tests/test_comment.py +++ b/plone/app/discussion/tests/test_comment.py @@ -158,7 +158,8 @@ class CommentTest(unittest.TestCase): comment1.text = "Go to http://www.plone.org" comment1.mime_type = 'text/x-web-intelligent' self.assertEqual(comment1.getText(), - 'Go to http://www.plone.org') + 'Go to http://www.plone.org') def test_getText_w_custom_targetMimetype(self): comment1 = createObject('plone.Comment') @@ -206,8 +207,7 @@ class CommentTest(unittest.TestCase): self.assertEqual(1, len(comment.workflow_history['comment_review_workflow'])) self.assertEqual(None, - comment.workflow_history['comment_review_workflow'][0]\ - ['action']) + comment.workflow_history['comment_review_workflow'][0]['action']) self.assertEqual('pending', self.portal.portal_workflow.getInfoFor(comment, 'review_state')) @@ -393,5 +393,6 @@ class RepliesTest(unittest.TestCase): str(new_re_re_re_id), re_re_re_comment.absolute_url()) + def test_suite(): return unittest.defaultTestLoader.loadTestsFromName(__name__) diff --git a/plone/app/discussion/tests/test_indexers.py b/plone/app/discussion/tests/test_indexers.py index bee1c26..27f7bff 100644 --- a/plone/app/discussion/tests/test_indexers.py +++ b/plone/app/discussion/tests/test_indexers.py @@ -9,7 +9,6 @@ from DateTime import DateTime from zope.component import createObject from plone.app.testing import TEST_USER_ID, setRoles -from plone.app.testing import logout, login from plone.app.discussion.testing import \ PLONE_APP_DISCUSSION_INTEGRATION_TESTING @@ -108,7 +107,6 @@ class CommentIndexersTest(unittest.TestCase): layer = PLONE_APP_DISCUSSION_INTEGRATION_TESTING - def setUp(self): self.portal = self.layer['portal'] setRoles(self.portal, TEST_USER_ID, ['Manager']) @@ -141,7 +139,8 @@ class CommentIndexersTest(unittest.TestCase): def test_description(self): self.assertEqual(catalog.description(self.comment)(), 'Lorem ipsum dolor sit amet.') - self.assertTrue(isinstance(catalog.description, DelegatingIndexerFactory)) + self.assertTrue( + isinstance(catalog.description, DelegatingIndexerFactory)) def test_description_long(self): # Create a 50 word comment and make sure the description returns diff --git a/plone/app/discussion/tool.py b/plone/app/discussion/tool.py index c35ee01..d7037f6 100644 --- a/plone/app/discussion/tool.py +++ b/plone/app/discussion/tool.py @@ -66,6 +66,7 @@ class CommentingTool(UniqueObject, SimpleItem): kw['object_provides'] = object_provides return catalog.searchResults(REQUEST, **kw) + def index_object(obj, event): """Index the object when added to the conversation """ @@ -73,6 +74,7 @@ def index_object(obj, event): if tool is not None: tool.indexObject(obj) + def unindex_object(obj, event): """Unindex the object when removed """